Каков наиболее описательный способ построения системы Лоренца?

Я (численно) решаю систему Лоренца, используя разные методы. Я строю это с использованием 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)

прозрачный

Обратите внимание, что, хотя это кажется хорошей визуализацией, ее интерактивная часть довольно медленная для большого количества точек. Если вам действительно нужна высокая производительность, рассмотрите альтернативный подход - разбиение линий на сегменты и раскраска их по индексу, аналогично тому, что делается здесь.

Другие вопросы по тегам