0

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

4

1 回答 1

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)

透明的

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

于 2016-11-01T11:57:48.873 回答