我(数字地)使用不同的方法解决Lorenz系统。我正在使用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()
产生
但它并不像我想要的那样具有描述性。我想知道绘制Lorenz系统最具描述性的方法是什么。
答案 0 :(得分:3)
考虑使分散点透明。您可以将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。