Jam*_*der 5 python zooming pyqtgraph
所以 Pyqtgraph 会自动计算轴并在缩放时重新缩放,这很好。然而我有两个轴,频率和小时。频率可以采用 0-100 之间的任何值,小时可以采用 0-39 之间的任何值。如何将轴限制为这些上限/下限,以便当用户缩放或平移时它们不能超出这些值?
我的代码如下(3行,我的实际代码会绘制更多):
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')
from random import randint
class CustomViewBox(pg.ViewBox):
def __init__(self, *args, **kwds):
pg.ViewBox.__init__(self, *args, **kwds)
self.setMouseMode(self.RectMode)
## reimplement right-click to zoom out
def mouseClickEvent(self, ev):
if ev.button() == QtCore.Qt.RightButton:
#self.autoRange()
self.setXRange(0,5)
self.setYRange(0,10)
def mouseDragEvent(self, ev):
if ev.button() == QtCore.Qt.RightButton:
ev.ignore()
else:
pg.ViewBox.mouseDragEvent(self, ev)
app = pg.mkQApp()
vb = CustomViewBox()
graph = pg.PlotWidget(viewBox=vb, enableMenu=False)
colour = []
for i in range(0,3):
colourvalue = [randint(0,255), randint(0,255), randint(0,255)]
tuple(colourvalue)
colour.append(colourvalue)
y_data = [
[['a',0],['b',1],['c',None],['d',6],['e',7]],
[['a',5],['b',2],['c',1],['d',None],['e',1]],
[['a',3],['b',None],['c',4],['d',9],['e',None]],
]
x_data = [0, 1, 2, 3, 4]
for i in range(3):
xv = []
yv = []
for j, v in enumerate(row[i][1] for row in y_data):
if v is not None:
xv.append(int(j))
yv.append(float(v))
graph.plot(xv, yv, pen = colour[i], name=y_data[0][i][0])
graph.show()
graph.setWindowTitle('Hourly Frequency Graph')
graph.setXRange(0,5)
graph.setYRange(0,10)
graph.setLabel('left', "Frequency", units='%')
graph.setLabel('bottom', "Hour")
graph.showGrid(x=True, y=True)
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
Run Code Online (Sandbox Code Playgroud)
预先感谢您的任何帮助和建议!
小智 5
我知道这是一个旧问题,但以防万一其他人需要解决方案。通过获取当前轴(假设为最大缩小)并将这些值设置为视图框的范围,可以阻止用户缩小超过轴限制。
例如
range_ = graph.getViewBox().viewRange()
graph.getViewBox().setLimits(xMin=range_[0][0], xMax=range_[0][1],
yMin=range_[1][0], yMax=range_[1][1])
Run Code Online (Sandbox Code Playgroud)
文档:https://pyqtgraph.readthedocs.io/en/latest/graphicsItems/viewbox.html
| 归档时间: |
|
| 查看次数: |
4463 次 |
| 最近记录: |