在PyQt5中插入matplotlab画图面板

打印 上一主题 下一主题

主题 837|帖子 837|积分 2511

  1. import sys
  2. from PyQt5.QtWidgets import QApplication, QMainWindow, QSizePolicy, QPushButton
  3. from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
  4. from matplotlib.figure import Figure
  5. import random
  6. class App(QMainWindow):
  7.     def __init__(self):
  8.         super().__init__()
  9.         self.title = '示例图像'
  10.         self.initUI()
  11.         self.m.plot()  #调用PlotCanvas的函数画图
  12.     def initUI(self):
  13.         self.setWindowTitle(self.title)
  14.         self.setGeometry(100, 100, 900, 400)
  15.         m = PlotCanvas(self, width=7, height=4)
  16.         m.move(0,0)
  17.         self.m = m
  18.         button = QPushButton('PyQt5 button', self)
  19.         button.setToolTip('This s an example button')
  20.         button.move(700,0)
  21.         button.resize(140,100)
  22.         self.show()
  23. class PlotCanvas(FigureCanvas):
  24.     def __init__(self, parent=None, width=7, height=4, dpi=100):
  25.         fig = Figure(figsize=(width, height), dpi=dpi) #matplotlab的Figure类
  26.         self.axes = fig.add_subplot(111)
  27.         FigureCanvas.__init__(self, fig)
  28.         self.setParent(parent)
  29.         FigureCanvas.setSizePolicy(self,
  30.                 QSizePolicy.Expanding,
  31.                 QSizePolicy.Expanding)
  32.         FigureCanvas.updateGeometry(self)
  33.     def plot(self):
  34.         data = [random.random() for i in range(25)]
  35.         #ax = self.figure.clear()
  36.         #ax = self.figure.add_subplot(111)
  37.         ax = self.figure.axes[0]  #获取原有的第一个axes
  38.         ax.plot(data, 'r-')  #画图折线图,红色----
  39.         ax.set_title('PyQt Matplotlib Example')
  40.         self.draw()
  41. if __name__ == '__main__':
  42.     app = QApplication(sys.argv)
  43.     ex = App()
  44.     sys.exit(app.exec_())
复制代码
添加一个继承自FigureCanvas的PlotCanvas类。
PlotCanvas类放置在PyQt窗口面板中。
在PlotCanvas类中调用matplotlab的Figure类,再通过获取axes,通过axes画图。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

温锦文欧普厨电及净水器总代理

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表