Пожалуйста, обратите внимание, что пользователь заблокирован
Возникла задача рисовать вот такие картинки (в реальном времени, по мере поступления информации с системы сбора данных). Так называемый график-"водопад".
С гуями/интерфейсами - опыта работы нет. Поиск в гугле обнаружил библиотеку matplotlib для питона, при помощи которой такие штуки вроде как делаются.
Накодил тест
Фактически все просто - создаем массив размером max_arr х max_arr (в примере 30х30 точек), потом в цикле
- сдвигаем все столбцы влево на 1 столбец
- в правый столбец кладем рандомные числа (имитация реальных данных)
- отрисовываем в pcolormesh
И оно даже работает.
Только вот проблема в том, что при увеличении размерности массивов a.k.a. разрешения картинки - все начинает дико тормозить при перерисовке/обновлении.
Если задать max_arr = 300 то прога вообще не стартует, виснет на белом экране. А мне нужно отображать массив 3000х3000 с частотой обновления хотя бы пару Герц.
Куда пнуть питона чтобы оно заработало с нормальной скоростью?
С гуями/интерфейсами - опыта работы нет. Поиск в гугле обнаружил библиотеку matplotlib для питона, при помощи которой такие штуки вроде как делаются.
Накодил тест
Python:
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.colors import BoundaryNorm
from matplotlib.ticker import MaxNLocator
import numpy as np
import random
max_arr = 30
vect = np.zeros(max_arr)
vect[5]=3
for i in range(max_arr):
vect[i]=random.randint(1,10)
X = np.zeros((max_arr,max_arr))
for i in range(max_arr):
for n in range(max_arr):
X[i,n]=n
Y = np.zeros((max_arr,max_arr))
for i in range(max_arr):
for n in range(max_arr):
Y[i,n]=i
Z = np.zeros((max_arr,max_arr))
Z[:,max_arr-1]=vect
fig,ax=plt.subplots()
for c in range(100):
for i in range(max_arr-1):
Z[:,i]=Z[:,i+1]
ax.pcolormesh(X,Y,Z)
for n in range(max_arr):
vect[n]=random.randint(1,10)
Z[:,max_arr-1]=vect
ax.pcolormesh(X,Y,Z)
plt.pause(0.5)
plt.show()
Фактически все просто - создаем массив размером max_arr х max_arr (в примере 30х30 точек), потом в цикле
- сдвигаем все столбцы влево на 1 столбец
- в правый столбец кладем рандомные числа (имитация реальных данных)
- отрисовываем в pcolormesh
И оно даже работает.
Только вот проблема в том, что при увеличении размерности массивов a.k.a. разрешения картинки - все начинает дико тормозить при перерисовке/обновлении.
Если задать max_arr = 300 то прога вообще не стартует, виснет на белом экране. А мне нужно отображать массив 3000х3000 с частотой обновления хотя бы пару Герц.
Куда пнуть питона чтобы оно заработало с нормальной скоростью?