Построение большого количества отрезков в python (с использованием matplotlib или pyqtgraph) - PullRequest
0 голосов
/ 26 мая 2020

У меня есть программа, которая генерирует около 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. Как это сделать?

...