2016-05-23 92 views
1

我正在为我正在进行的机器学习项目进行可视化,并且我正在使用matplotlib进行绘图。 matplotlib的后端是Qt4Agg。绘制的点数小于100.平铺和缩放pyplot非常缓慢

平移和缩放非常缓慢。你知道这可能是什么原因吗?

import numpy as np 
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 

from classifier import Classifier 

cl = Classifier(1) 
with open("./data/enolase-01.bounds") as file: 
    data = file.read().strip().split("\n") 
    xdim = int(data[7].split(" ")[-1]) 
    ydim = int(data[8].split(" ")[-1]) 
    zdim = int(data[9].split(" ")[-1]) 

fig = plt.figure() 
ax = fig.add_subplot(111, projection="3d") 

for i, n in enumerate(cl.X[0]): 
    z = i % zdim 
    y = i/zdim % ydim 
    x = i/zdim/ydim % xdim 
    if n == 0.0: 
     continue 
    ax.scatter([x], [y], [z], c='r', marker="o") 
    #print x, y, z 


ax.set_xlabel('X Label') 
ax.set_ylabel('Y Label') 
ax.set_zlabel('Z Label') 

plt.show() 
+1

代码中没有任何东西可以解释您所遇到的情况。但是,请考虑将您的示例减少到[MCVE](https://stackoverflow.com/help/mcve)并再次检查功能。机会是减速与其他代码相关。另外,'enumerate'返回一个元组,第一个元素是一个整数(索引),是迭代器的第二个元素。你的(显示的)代码可以通过删除'import classifier ...'来减少,只使用numpy的'ndarray'来调用'ax.scatter'。 首先*减少你的代码*,但要找出问题出在哪里。 –

+0

我发现问题在于我多次调用分散方式。每700+分我会打一次,每个分数都是散点图。将所有内容放入单个调用中,可消除平移和缩放中的所有滞后。 –

回答

1

我发现问题在于我打了太多次分散的方式。每700+分我会打一次,每个分数都是散点图。将所有内容放入单个调用中,可消除平移和缩放中的所有滞后。