在PyQt中显示Matplotlib图表,通常使用 FigureCanvasQTAgg 类,这个类可以将Matplotlib的图表嵌入到PyQt应用程序中。
效果如图:
1.导入了Matplotlib的绘图库:
import matplotlib.pyplot as plt
2.创建一个Matplotlib图形对象:
self.figure = plt.figure()
3.将 Matplotlib 的图形(Figure)对象嵌入到一个 PyQt 应用程序中,以便在 GUI 窗口中显示图表
self.canvas = FigureCanvasQTAgg(self.figure)
其中FigureCanvasQTAgg 是 Matplotlib 的 Qt5 Agg 后端,用于在 Qt 应用程序中呈现 Matplotlib 图表。
最后,你可以将图表添加到自己的布局中。
以下为详细代码:
import sys
import matplotlib.pyplot as plt
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
class MatplotlibWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Matplotlib in PyQt')
# 创建Matplotlib图形
self.figure = plt.figure()
self.canvas = FigureCanvas(self.figure)
# 创建一个垂直布局并将Matplotlib图形添加到其中
layout = QVBoxLayout()
layout.addWidget(self.canvas)
# 创建一个QWidget并将布局设置为其主布局
main_widget = QWidget(self)
main_widget.setLayout(layout)
self.setCentralWidget(main_widget)
# 创建一个Matplotlib子图
self.ax = self.figure.add_subplot(111)
self.ax.set_title('Matplotlib in PyQt')
# 绘制一个简单的图形
self.ax.plot([1, 2, 3, 4], [10, 5, 20, 8])
# 更新Matplotlib图形
self.canvas.draw()
def main():
app = QApplication(sys.argv)
window = MatplotlibWindow()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()