Skip to content

Commit 6dd2ca3

Browse files
committed
add 27
1 parent dcd0e3c commit 6dd2ca3

File tree

2 files changed

+56
-1
lines changed

2 files changed

+56
-1
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,6 @@
4444

4545
* p25_图片自适应label控件大小 [源码下载](p25_图片自适应label控件大小) [博文地址](https://xugaoxiang.com/2022/04/10/pyqt5-25-image-scale/)
4646

47-
* p26_设置背景图片 [源码下载](p26_设置背景图片) [博文地址](https://xugaoxiang.com/2022/04/26/pyqt5-26-stylesheet/)
47+
* p26_设置背景图片 [源码下载](p26_设置背景图片) [博文地址](https://xugaoxiang.com/2022/04/26/pyqt5-26-stylesheet/)
48+
49+
* p27_显示matplotlib图表 [源码下载](p27_显示matplotlib图表) [博文地址](https://xugaoxiang.com/2022/05/03/pyqt5-27-matplotlib/)

p27_显示matplotlib图表/main.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import sys
2+
import matplotlib
3+
4+
matplotlib.use('Qt5Agg')
5+
6+
from PyQt5 import QtWidgets
7+
8+
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg, NavigationToolbar2QT as NavigationToolbar
9+
from matplotlib.figure import Figure
10+
11+
12+
# 在PyQt5中显示matplotlib,它的原理就是使用FigureCanvasQTAgg作为后端(backend),将plot渲染成简单的bitmap图片
13+
class MplCanvas(FigureCanvasQTAgg):
14+
15+
def __init__(self, parent=None, width=5, height=4, dpi=100):
16+
# figsize尺寸,dpi指定绘图分辨率
17+
fig = Figure(figsize=(width, height), dpi=dpi)
18+
19+
# add_subplot的参数是ijn的形式,代表3个数,其中ij是行列数,n是第n个图,比如(111)则是一个有1个图,该图位于第1个
20+
self.axes = fig.add_subplot(111)
21+
super(MplCanvas, self).__init__(fig)
22+
23+
24+
class MainWindow(QtWidgets.QMainWindow):
25+
26+
def __init__(self, *args, **kwargs):
27+
super(MainWindow, self).__init__(*args, **kwargs)
28+
self.setWindowTitle('matplotlib with pyqt5')
29+
30+
sc = MplCanvas(self, width=5, height=4, dpi=200)
31+
# x轴、y轴的数据
32+
sc.axes.plot([0, 1, 2, 3, 4, 5, 6], [1, 10, 20, 4, 50, 16, 20])
33+
34+
# 创建toolbar,2个参数分别是canvas对象和当前窗口对象
35+
toolbar = NavigationToolbar(sc, self)
36+
37+
# 放到垂直布局里
38+
layout = QtWidgets.QVBoxLayout()
39+
layout.addWidget(toolbar)
40+
layout.addWidget(sc)
41+
42+
# 设置整个窗口布局并显示
43+
widget = QtWidgets.QWidget()
44+
widget.setLayout(layout)
45+
self.setCentralWidget(widget)
46+
self.show()
47+
48+
49+
if __name__ == '__main__':
50+
app = QtWidgets.QApplication(sys.argv)
51+
windows = MainWindow()
52+
windows.show()
53+
sys.exit(app.exec_())

0 commit comments

Comments
 (0)