如何在pyqtgraph中设置刻度
How to set the ticks in pyqtgraph
我想在 pyqtgraph.PlotWidget() 中显示多通道数据。但是当设置 AxisItem() 的 yRange 时,刻度会自动更改。就像这样:
import pyqtgraph as pg
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('PyqtLib')
self.setFixedSize(1000, 800)
pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')
layout = QHBoxLayout(self)
self.graph_show = pg.PlotWidget()
layout.addWidget(self.graph_show)
self.graph_show.setRange(yRange = (0, 5), xRange = (0, 10), disableAutoRange=True)
self.graph_show.invertY()
for i in range(1, 10):
self.graph_show.addLine(x=i, pen='k')
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
但是当给定 yRange=(0, 5) 时,刻度会自动设置为 [0, 1, 2, 3, 4, 5]。但我希望 ytick 是 [0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5]。
在 matplotlib 中,我可以轻松地更改刻度:
import matplotlib.pyplot as plt
plt.yticks([0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5])
但我无法更改 pyqtgraph 中的刻度。那么如何使用pyqtgraph来做到这一点呢?
您必须使用 getAxis()
方法并传递位置 'left' 以获得左轴并使用 setTicks()
方法设置刻度 您必须传递列表列表元组,其中每个元组在位置和相应字符串之间有对应关系:
from PyQt5 import QtCore, QtWidgets
import pyqtgraph as pg
class Window(QtWidgets.QWidget):
def __init__(self):
super(Window, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('PyqtLib')
self.setFixedSize(640, 480)
pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')
layout = QtWidgets.QHBoxLayout(self)
self.graph_show = pg.PlotWidget()
layout.addWidget(self.graph_show)
self.graph_show.setRange(yRange = (0, 5), xRange = (0, 10), disableAutoRange=True)
self.graph_show.invertY()
for i in range(1, 10):
self.graph_show.addLine(x=i, pen='k')
ay = self.graph_show.getAxis('left')
ticks = [0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5]
ay.setTicks([[(v, str(v)) for v in ticks ]])
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
我想在 pyqtgraph.PlotWidget() 中显示多通道数据。但是当设置 AxisItem() 的 yRange 时,刻度会自动更改。就像这样:
import pyqtgraph as pg
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('PyqtLib')
self.setFixedSize(1000, 800)
pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')
layout = QHBoxLayout(self)
self.graph_show = pg.PlotWidget()
layout.addWidget(self.graph_show)
self.graph_show.setRange(yRange = (0, 5), xRange = (0, 10), disableAutoRange=True)
self.graph_show.invertY()
for i in range(1, 10):
self.graph_show.addLine(x=i, pen='k')
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
但是当给定 yRange=(0, 5) 时,刻度会自动设置为 [0, 1, 2, 3, 4, 5]。但我希望 ytick 是 [0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5]。 在 matplotlib 中,我可以轻松地更改刻度:
import matplotlib.pyplot as plt
plt.yticks([0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5])
但我无法更改 pyqtgraph 中的刻度。那么如何使用pyqtgraph来做到这一点呢?
您必须使用 getAxis()
方法并传递位置 'left' 以获得左轴并使用 setTicks()
方法设置刻度 您必须传递列表列表元组,其中每个元组在位置和相应字符串之间有对应关系:
from PyQt5 import QtCore, QtWidgets
import pyqtgraph as pg
class Window(QtWidgets.QWidget):
def __init__(self):
super(Window, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('PyqtLib')
self.setFixedSize(640, 480)
pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')
layout = QtWidgets.QHBoxLayout(self)
self.graph_show = pg.PlotWidget()
layout.addWidget(self.graph_show)
self.graph_show.setRange(yRange = (0, 5), xRange = (0, 10), disableAutoRange=True)
self.graph_show.invertY()
for i in range(1, 10):
self.graph_show.addLine(x=i, pen='k')
ay = self.graph_show.getAxis('left')
ticks = [0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5]
ay.setTicks([[(v, str(v)) for v in ticks ]])
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())