使用鼠标在 pyqtgraph 中仅在 x 或 y 方向缩放

mr_*_*_js 6 python pyqtgraph

我正在使用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 中解决这个问题的最佳方法是什么?

nat*_*ncy 10

您可以使用setMouseEnabled()。从文档中:

setMouseEnabled(x=None, y=None)
Run Code Online (Sandbox Code Playgroud)

设置每个轴是否启用鼠标交互。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
Run Code Online (Sandbox Code Playgroud)

仅 X 轴(左)、仅 Y 轴(右)