Я создал программу для отображения очень высоких данных о показателях дискретизации в профиле. Есть 6 каналов (Mag [0..2] & Diff [0..2]), отображаемые при 30 кГц. Я отображаю их в 3 профилях, MAG [0] с Diff [0] и т. Д. Все графики имеют одинаковую ось X (nptime), которая является numpy imedate64, с различными шкалами для Mag и Diff. Оси от 0 до 2 представляют профили MAG, а от 3 до 5 - различие. Я делаю это в обратном вызове на событии xlim_changed для оси 0.
it почти работает. Я вызываю set_ylim в обратном вызове, используя диапазон данных для оконных данных. Для магнитных каналов пределы Y устанавливаются правильно для 2 из 3 панелей, но панель I увеличила (в зависимости от того, что это такое), в конечном итоге отображает экстенты масштабирования, а не новые экстенты. Для каналов DIFF я настроил оси от 3 до 5 для Sharey, поэтому мне нужно только установить оси 3, но SET_YLIM игнорируется. Он всегда отображается с y extent от увеличения. Я на самом деле не хочу, чтобы ylim вообще изменился, я всегда устанавливаю его на одно и то же значение. < /P>
def reset_data(self, ax):
# the viewLim extents are decimal days, so some coordinate conversion is required
width = ax.viewLim.width*86400
start=np.datetime64(pd.to_datetime(self.nptime[0]).date()) +np.timedelta64(int(ax.viewLim.min[0]%1*8.64e10),'us')
idx0 = self.find_nearest(self.nptime, start)
end=np.datetime64(pd.to_datetime(self.nptime[0]).date()) +np.timedelta64(int(ax.viewLim.max[0]%1*8.64e10),'us')
idx1 = self.find_nearest(self.nptime[idx0:], end) + idx0
# the get_rate function returns 1 of 3 desample factors 1, 10 or 100
rate = self.get_rate(width)
xdata = self.nptime[idx0:idx1:rate]
for i in range(3):
ydata = self.mag[i, idx0:idx1:rate]
ymin = ydata.min()
ymax = ydata.max()
diff = (ymax - ymin)*.1
# self.lines is an array of the plots returned by self.ax[].plot()
self.lines[0].set_data(xdata,ydata)
self.ax.set_ylim(ymin-diff, ymax+diff)
for i in range(3):
ydata = self.diff[i, idx0:idx1:rate]
self.lines[i+3][0].set_data(xdata,ydata)
self.ax[3].set_ylim(self.min_diff, self.max_diff)
< /code>
Перед масштабированием:
< /p>
После Zoom:
Обратите внимание, что ограничения панели для каналов Mag (Blue) были установлены на предел данных (+10%) для панелей 2 и 3, но экстенты из ящика на панели 1. Также не на панели 3 и 3, которые не будут. Ограничения, которые я установил. < /p>
Извините за длинный пост. Я не могу объяснить это более кратко.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ogram-long
Сброс лимитов данных при увеличении программы Matplotlib Python (Long) ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Сброс лимитов данных при увеличении программы Matplotlib Python (Long)
Anonymous » » в форуме Python - 0 Ответы
- 1 Просмотры
-
Последнее сообщение Anonymous
-