將 matplotlib 嵌入 PyQt5

將 matplotlib 嵌入 PyQt5

使用 Python 的科學計算模塊,可以快速的對圖像進行處理。使用PyQt5做成GUI程序,有效的進行展示

一、嵌入到QDialog中

#coding:utf-8# 導入matplotlib模塊並使用Qt5Aggimport matplotlibmatplotlib.use(Qt5Agg)# 使用 matplotlib中的FigureCanvas (在使用 Qt5 Backends中 FigureCanvas繼承自QtWidgets.QWidget)from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasfrom PyQt5 import QtCore, QtWidgets,QtGuiimport matplotlib.pyplot as pltimport sysclass My_Main_window(QtWidgets.QDialog): def __init__(self,parent=None): # 父類初始化方法 super(My_Main_window,self).__init__(parent) # 幾個QWidgets self.figure = plt.figure() self.canvas = FigureCanvas(self.figure) self.button_plot = QtWidgets.QPushButton("繪製") # 連接事件 self.button_plot.clicked.connect(self.plot_) # 設置布局 layout = QtWidgets.QVBoxLayout() layout.addWidget(self.canvas) layout.addWidget(self.button_plot) self.setLayout(layout) # 連接的繪製的方法 def plot_(self): ax = self.figure.add_axes([0.1,0.1,0.8,0.8]) ax.plot([1,2,3,4,5]) self.canvas.draw()# 運行程序if __name__ == __main__: app = QtWidgets.QApplication(sys.argv) main_window = My_Main_window() main_window.show() app.exec()

效果圖:點擊繪製按鈕,繪製圖像

二、嵌入到QMainWindow中

#coding:utf-8# 導入必要的模塊import matplotlibmatplotlib.use(Qt5Agg)from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasfrom PyQt5 import QtCore, QtWidgets,QtGuiimport matplotlib.pyplot as pltimport sysclass My_Main_window(QtWidgets.QMainWindow): def __init__(self,parent=None): super(My_Main_window,self).__init__(parent) # 重新調整大小 self.resize(800, 659) # 添加菜單中的按鈕 self.menu = QtWidgets.QMenu("繪圖") self.menu_action = QtWidgets.QAction("繪製",self.menu) self.menu.addAction(self.menu_action) self.menuBar().addMenu(self.menu) # 添加事件 self.menu_action.triggered.connect(self.plot_) self.setCentralWidget(QtWidgets.QWidget()) # 繪圖方法 def plot_(self): # 清屏 plt.cla() # 獲取繪圖並繪製 fig = plt.figure() ax =fig.add_axes([0.1,0.1,0.8,0.8]) ax.set_xlim([-1,6]) ax.set_ylim([-1,6]) ax.plot([0,1,2,3,4,5],o--) cavans = FigureCanvas(fig) # 將繪製好的圖像設置為中心 Widget self.setCentralWidget(cavans)if __name__ == __main__: app = QtWidgets.QApplication(sys.argv) main_window = My_Main_window() main_window.show() app.exec()

效果圖:

注意QDialog 和 QMainwindow對於處理畫圖的Cavans的不同之處,由於QDialog只是一個繪畫窗口,需要在新建的時候就把QWidget和布局畫好。而QMainwindow則不相同,可以在以後的繪製中使用setCentralWidget方法重新定義中間部分的QWidget可以在需要的時候重新更改Canvas


推薦閱讀:

Matplotlib學習-12分格顯示
Matplotlib 可視化系列一
Matplotlib中annotate的簡單用法
Seaborn(sns)官方文檔學習筆記(第六章 繪製數據網格)
plt.rcParams

TAG:Matplotlib | Python | PyQt |