假设现在已经可以绘制简单的一张图。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8d053712f7dd03b7649f9521e33b8766.png)
如果不知道怎么达到这个状态的话,可以参考我的前一篇文章。
pyqtgraph项目实战(二):使用pyqtgraph绘制简单折线图
方法展示
其实self.widget 就是一块画布。之前的代码在画布上添加了一张图片。用类似的方式可以添加多张图。
window.py文件
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'test.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.widget = GraphicsLayoutWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(20, 20, 751, 411))
self.widget.setObjectName("widget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(330, 450, 93, 28))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
from pyqtgraph import GraphicsLayoutWidget
main.py文件
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from window import Ui_MainWindow
import numpy as np
class MainWidow(QMainWindow, Ui_MainWindow):
def __init__(self):
super(MainWidow, self).__init__()
self.setupUi(self)
p1 = self.widget.addPlot(title="Basic array plotting",
y=np.random.normal(size=100))
p2 = self.widget.addPlot(title="Multiple curves")
p2.plot(np.random.normal(size=100), pen=(255, 0, 0), name="Red curve")
p2.plot(np.random.normal(size=110) + 5,
pen=(0, 255, 0),
name="Green curve")
p2.plot(np.random.normal(size=120) + 10,
pen=(0, 0, 255),
name="Blue curve")
p3 = self.widget.addPlot(title="Drawing with points")
p3.plot(np.random.normal(size=100),
pen=(200, 200, 200),
symbolBrush=(255, 0, 0),
symbolPen='w')
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWidow()
# form.showFullScreen()
window.show()
sys.exit(app.exec_())
代码解释
上面的main.py 文件中, 一共向 self.widget 中添加了三张图, p1,p2,p3。然后分别对三张图的数据、格式进行定义,就可以在一块画布上画出不同的曲线。
以p2为例,简单介绍一下关键代码。
p2 = self.widget.addPlot(title="Multiple curves")
中,self.widget.addPlot 就是在widget中添加一个plot,也就是一个坐标轴,并赋值给p2。之后想对坐标轴进行操作的时候就可以直接用 p2 调用坐标轴。后面的 p2.plot()
就是在p2这个坐标轴中展示数据。
这里在第三张图中加入了一些symbol,通过参数 symbol、symbolBrush 、 symbolPen 来进行设置。symbol默认是圆形,brush是内部颜色,pen是边缘颜色。
源码文件
https://gitee.com/xixo549845545/pyqtgraph_my_cookbook
本节文件在ch3中