Я делаю визуализации для проекта машинного обучения, над которым я работаю, и я использую 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()
В коде нет ничего, что бы объяснить, что вы испытываете. Однако подумайте о том, чтобы уменьшить ваш пример до [MCVE] (https://stackoverflow.com/help/mcve) и снова проверить функциональность. Скорее всего, замедление связано с другими фрагментами кода. Кроме того, 'enumerate' возвращает кортеж, первым элементом которого является целое число (индекс), 2 - элемент итератора. Ваш (показанный) код можно уменьшить, удалив «import classifier ...» и только вызывая «ax.scatter» один раз, используя nump's 'ndarray's. Сначала * уменьшите свой код *, хотя, чтобы узнать, где проблема. –
Я понял, что проблема в том, что я вызываю разброс слишком много раз. Я назову его один раз для каждого из 700 + очков, и каждый из них - график рассеяния. Включение всего в один звонок удалило все задержки в панорамировании и масштабировании. –