Масштабирование только в направлении x или y в pyqtgraph с помощью мыши - PullRequest
1 голос
/ 15 мая 2019

Я использую pyqtgraph , который имеет стандартное масштабирование с помощью колесика мыши. Однако для моего приложения мне нужно увеличивать только в направлении X или Y.

Я хочу сделать следующее:

  • Определить начальную позицию щелчка мыши: x1, y1
  • Перетащите мышь в направлении x или y, затем отпустите кнопку мыши.
  • Определить положение освобождения щелчка мыши: x2, y2
  • Рассчитать dx = x2-x1 и dy = y2-y1
  • Если dx> dy, обновлять только пределы x графика до [x1, x2].
  • Если dy> dx, обновлять только пределы y графика до [y1, y2].

Как лучше всего подойти к этому в pyqtgraph?

1 Ответ

2 голосов
/ 16 мая 2019

Вы можете использовать setMouseEnabled(). Из документации:

setMouseEnabled(x=None, y=None)

Установите, включена ли каждая ось для взаимодействия с мышью. Аргументы x, y должны быть True или False. Это позволяет пользователю панорамировать / масштабировать одну ось вида, оставляя другую ось без изменений.

Например

import pyqtgraph as pg

plot_widget = pg.PlotWidget() 
plot_widget.plotItem.setMouseEnabled(y=False) # Only allow zoom in X-axis
plot_widget.plotItem.setMouseEnabled(x=False) # Only allow zoom in Y-axis

Только ось X (слева), только ось Y (справа)

image image

...