Каков наиболее описательный способ построения системы Лоренца?
Я (численно) решаю систему Лоренца, используя разные методы. Я строю это с использованием matplotlib, но я хотел бы найти способ лучше различать точки.
Например:
Давайте предположим, что точки, которые будут нанесены на график, хранятся в массиве a
который имеет форму
array([[ 0.5 , 0.5 , 0.5 ],
[ 0.50640425, 0.6324552 , 0.48965064]])
#...
Теперь эти строки кода
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(a[:,0],a[:,1],a[:,2])
plt.show()
производить:
Не очень описательно, не так ли? Поэтому я думал, что построение отдельных точек будет работать лучше. Итак, эти:
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(a[:,0],a[:,1],a[:,2], s=0.2)
plt.show()
производить:
Но это не так описательно, как я хочу. Я хочу знать, каков наиболее описательный способ построения системы Лоренца.
1 ответ
Подумайте о том, чтобы сделать ваши точки разброса прозрачными. Вы можете сделать это, передав alpha
ключевое слово для plt.scatter
, Вот пример, модифицированный из mplot3d
пример галереи, с alpha = 1.0
, который является значением по умолчанию:
ax.scatter(xs, ys, zs, alpha=1.0, s=0.2)
А вот то же облако рассеяния, нарисованное с alpha = 0.1
:
ax.scatter(xs, ys, zs, alpha=0.1, s=0.2)
Обратите внимание, что, хотя это кажется хорошей визуализацией, ее интерактивная часть довольно медленная для большого количества точек. Если вам действительно нужна высокая производительность, рассмотрите альтернативный подход - разбиение линий на сегменты и раскраска их по индексу, аналогично тому, что делается здесь.