У меня есть программа, которая генерирует около n = 100 000 сегментов, которые я решил сохранить внутри массива формы (n, 2,2) (где сегмент кодируется двумя точками, составляющими его концы). Мой график находится в 2D .
Я пытался построить эти сегменты для n = 10 000 (это намного меньше, чем я хочу), и для запуска потребовалось около часа и появиться на моем экране. У меня нет действительно мощного компьютера (ОЗУ: 8 ГБ; и Core i5, который не является ни действительно мощным, ни новым), но я надеюсь, что смогу сделать все быстрее. Я использовал метод go через мой (n, 2,2) - NumPy -массив и построил линию между каждой парой двух точек с помощью matplotlib.
Что я хочу:
1) Возможность сначала нарисовать эти сегменты в стат c
2) Сделать вещи интерактивными (я хочу увидеть проекцию набора этих сегментов на одну осевую линию, а затем повернуть мой набор чтобы увидеть, как меняются прогнозы)
EDIT: так что я почти нашел способ: построение с помощью pyqtgraph. Если я говорю «почти», это потому, что это очень быстро, когда я рисую каждый сегмент в одной строке, используя следующий код:
plotWidget = pg.plot(title="Test")
X = []
Y = []
for u in A:
X.append(u[0,0])
X.append(u[1,0])
Y.append(u[0,1])
Y.append(u[1,1])
plotWidget.plot(X,Y, pen='g')
Где A - массив numpy формы (n, 2, 2). Когда я обедаю с n = 10 000, на построение графика уходит меньше секунды. Однако он отображает все в одной строке, и я хочу построить его сегмент за сегментом.
Итак, я попробовал следующий код:
for u in A:
plotWidget.plot([u[0,0],u[1,0]],[u[0,1],u[1,1]],pen = 'g')
Но через час он не отобразился вверх ... Я думаю, это потому, что вызов "plot" тяжелый (это также может быть проблема с тем, что я сделал с matplotlib).
Я попробую использовать Vispy, чтобы посмотреть, работает ли он лучше для моего case.
EDIT2: я обнаружил коллекцию в matplotlib. Я использовал «Linecolletion» и теперь могу очень быстро построить график с помощью matplotlib!
Однако, я хотел бы сделать то же самое с pyqtgraph. Как это сделать?