绘制洛伦兹系统的最具描述性的方法是什么?
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.
我正在(在数值上)使用不同的方法求解洛伦兹系统。我正在使用 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.