2016-05-23 2 views
1

Я делаю визуализации для проекта машинного обучения, над которым я работаю, и я использую matplotlib для сюжетов. Бэкэнд для matplotlib - Qt4Agg. Количество построенных точек меньше 100.Pan and zoom in 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' возвращает кортеж, первым элементом которого является целое число (индекс), 2 - элемент итератора. Ваш (показанный) код можно уменьшить, удалив «import classifier ...» и только вызывая «ax.scatter» один раз, используя nump's 'ndarray's. Сначала * уменьшите свой код *, хотя, чтобы узнать, где проблема. –

+0

Я понял, что проблема в том, что я вызываю разброс слишком много раз. Я назову его один раз для каждого из 700 + очков, и каждый из них - график рассеяния. Включение всего в один звонок удалило все задержки в панорамировании и масштабировании. –

ответ

1

Я понял, что проблема в том, что я вызываю разброс слишком много раз. Я назову его один раз для каждого из 700 + очков, и каждый из них - график рассеяния. Включение всего в один звонок удалило все задержки в панорамировании и масштабировании.

Смежные вопросы