我正在使用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
  • 图形卡:至强E3-1200 v2/3rd Gen Core处理器图形 Controller
  • 内存:10GB RAM
  • HDD:三星SSD 500 GB

  • 运行Ubuntu 16.10

    最佳答案

    (2021年修订)
    Matplotlib并非真正设计为可交互的。 Plotly(除其他外)是一个绘图软件包,该软件包相当完整,并且使用webGL后端的scatter3D将在您的浏览器中呈现(并且速度很快)。有关为什么您可能希望在底部将其视为首选替代品的更多信息:

    # pip install plotly
    import numpy as np
    import plotly.graph_objects as go
    
    my_data = np.random.rand(6500,3)  # toy 3D points
    marker_data = go.Scatter3d(
        x=my_data[:,0],
        y=my_data[:,1],
        z=my_data[:,2],
        marker=go.scatter3d.Marker(size=3),
        opacity=0.8,
        mode='markers'
    )
    fig=go.Figure(data=marker_data)
    fig.show()
    
    python - matplotlib缓慢的3D散点旋转-LMLPHP
    我将plotly用作matplotlib的替代品,因为:
  • 它具有广泛的覆盖范围(条形图,散点图,线条,历史记录等)。
  • 高度可配置的直观交互式组件
  • 可移植性:它可以生成易于在网络上查看的html图(!)或保存为静态文件格式
  • 它具有比matplotlib更清晰的api(对于完整配置,json ish)
  • 它与 Pandas 紧密集成(您可以use it as the backend)
  • 受到了很好的支持,并且采用率也在不断提高
  • 09-30 15:37
    查看更多