【发布时间】:2017-08-28 11:42:56
【问题描述】:
我正在使用 matplotlib 散点图 3D 点矩阵。 我正在使用以下代码:
import pylab as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
my_data = np.random.rand(6500,3) # toy 3D points
fig = plt.figure()
ax = Axes3D(plt.gcf())
ax.scatter(my_data[:,0],my_data[:,1],my_data[:,2])
plt.show()
它有效,所以它会打开一个窗口,我可以在其中看到我的观点。
但是,如果我尝试用鼠标旋转绘图(单击并拖动它),它的旋转速度真的很慢。
我认为 6500 点对于如此缓慢和滞后的旋转来说并不算多,所以我想知道是否需要进行任何预配置来加快速度。
注意:我尝试使用 Matlab,我可以旋转更大的散点图而没有任何延迟,所以这不是计算机限制。
有人可以运行这段代码,看看是否也遇到了缓慢的旋转?
编辑:使用系统监视器我可以看到在旋转点时,只使用了一个 CPU,因此 matplotlib 没有并行化进程。
我的电脑规格:
- Intel(R) Core(TM) i5-3550 CPU @ 3.30GHz
- 显卡:Xeon E3-1200 v2/3rd Gen Core 处理器图形控制器
- 内存:10GB RAM
- 硬盘:三星 SSD 500 GB
运行 Ubuntu 16.10
【问题讨论】:
-
恐怕 matplotlib 在设计时没有考虑到速度,在您的情况下性能缓慢并不是您本地安装的特定怪癖 - 这是 mplot3d 的编写方式。如果你想在 python 中使用快速 3d 散点图,你可以查看
plotly.pylib - 它非常快,尽管它的 python 功能有些限制。 -
回应@VlasSokolov 所说的——matplotlib 不是为快速交互式绘图而设计的,尤其是在 3D 中(这不是真正成熟的 3D 功能,更多的是为了方便)。您还可以查看 mayavi 进行 3D 绘图。另外,作为 Python 提示 - 我建议反对
import pylab as plt。plt通常用于matplotlib.pyplotnotpylab。您可能发现的任何这样做的例子都是旧的。此外,完全不建议在脚本中使用 pylab 作为好习惯 - 分别使用 matplotlib 和 numpy。
标签: python matplotlib scatter-plot