绘制洛伦兹系统的最具描述性的方法是什么?

What is the most descriptive way to plot Lorenz System?

我正在(在数值上)使用不同的方法求解洛伦兹系统。我正在使用 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()

生产:

但它没有我想要的描述性。我想知道绘制洛伦兹系统的最具描述性的方法是什么。

考虑使您的散点透明。您可以通过将 alpha 关键字传递给 plt.scatter 来完成此操作。这是一个示例,从 mplot3d example gallery 修改而来,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)

请注意,虽然这看起来是一个很好的可视化,但它的交互部分对于大量点来说非常慢。如果您确实需要快速性能,请考虑另一种方法 - 将线分割成线段并按索引为它们着色,类似于正在做的 here.