我正在创建一个PyQt5 Gui,我正在使用PyQtGraph绘制一些数据。这是一个最小的,完整的,可验证的示例脚本,与我的结构非常相似。
import sys
from PyQt5.QtWidgets import (QWidget, QGridLayout, QApplication)
import pyqtgraph as pg
from pyqtgraph import QtCore, QtGui
class CustomPlot(pg.GraphicsObject):
def __init__(self, data):
pg.GraphicsObject.__init__(self)
self.data = data
print(self.data)
self.generatePicture()
def generatePicture(self):
self.picture = QtGui.QPicture()
p = QtGui.QPainter(self.picture)
p.setPen(pg.mkPen('w', width=1/2.))
for (t, v) in self.data:
p.drawLine(QtCore.QPointF(t, v-2), QtCore.QPointF(t, v+2))
p.end()
def paint(self, p, *args):
p.drawPicture(0, 0, self.picture)
def boundingRect(self):
return QtCore.QRectF(self.picture.boundingRect())
class Window(QWidget):
def __init__(self):
super().__init__()
self.initUI()
self.simpleplot()
def initUI(self):
self.guiplot = pg.PlotWidget()
layout = QGridLayout(self)
layout.addWidget(self.guiplot, 0,0)
def simpleplot(self):
data = [
(1., 10),
(2., 13),
(3., 17),
(4., 14),
(5., 13),
(6., 15),
(7., 11),
(8., 16)
]
pgcustom = CustomPlot(data)
self.guiplot.addItem(pgcustom)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
y轴位于图的左侧,但我想将其向右移动。我已经尝试了很多东西,但我找不到具有选项或方法来实现此目的的对象(QtGui.QPainter,GraphicObject等)。
答案 0 :(得分:1)
可以通过PlotItem
类的方法进行设置。
def initUI(self):
self.guiplot = pg.PlotWidget()
plotItem = self.guiplot.getPlotItem()
plotItem.showAxis('right')
plotItem.hideAxis('left')
如果您还没有阅读Organization of Plotting Classes上的部分,请查看它。特别是PlotWidet
和PlotItem
类之间的关系。