python pyqt5 matplotlib繪圖

import sys
import random
import matplotlib

matplotlib.use("Qt5Agg")
from PyQt5 import QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QSizePolicy, QWidget
from numpy import arange, sin, pi
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure
import matplotlib.pyplot as plt

class MyMplCanvas(FigureCanvas):
"""FigureCanvas的最終的父類其實(shí)是QWidget厂捞。"""

def __init__(self, parent=None, width=5, height=4, dpi=100):

    # 配置中文顯示
    plt.rcParams['font.family'] = ['SimHei']  # 用來(lái)正常顯示中文標(biāo)簽
    plt.rcParams['axes.unicode_minus'] = False  # 用來(lái)正常顯示負(fù)號(hào)

    self.fig = Figure(figsize=(width, height), dpi=dpi)  # 新建一個(gè)figure
    self.axes = self.fig.add_subplot(111)  # 建立一個(gè)子圖阴孟,如果要建立復(fù)合圖,可以在這里修改

    #self.axes.hold(False)  # 每次繪圖的時(shí)候不保留上一次繪圖的結(jié)果

    FigureCanvas.__init__(self, self.fig)
    self.setParent(parent)

    '''定義FigureCanvas的尺寸策略郑口,這部分的意思是設(shè)置FigureCanvas,使之盡可能的向外填充空間汹买。'''
    FigureCanvas.setSizePolicy(self,
                               QSizePolicy.Expanding,
                               QSizePolicy.Expanding)
    FigureCanvas.updateGeometry(self)

'''繪制靜態(tài)圖诗茎,可以在這里定義自己的繪圖邏輯'''

def start_static_plot(self):
    self.fig.suptitle('測(cè)試靜態(tài)圖')
    t = arange(0.0, 3.0, 0.01)
    s = sin(2 * pi * t)
    self.axes.plot(t, s)
    self.axes.set_ylabel('靜態(tài)圖:Y軸')
    self.axes.set_xlabel('靜態(tài)圖:X軸')
    self.axes.grid(True)

'''啟動(dòng)繪制動(dòng)態(tài)圖'''

def start_dynamic_plot(self, *args, **kwargs):
    timer = QtCore.QTimer(self)
    timer.timeout.connect(self.update_figure)  # 每隔一段時(shí)間就會(huì)觸發(fā)一次update_figure函數(shù)拷姿。
    timer.start(1000)  # 觸發(fā)的時(shí)間間隔為1秒。

'''動(dòng)態(tài)圖的繪圖邏輯可以在這里修改'''

def update_figure(self):
    self.fig.suptitle('測(cè)試動(dòng)態(tài)圖')
    l = [random.randint(0, 10) for i in range(4)]
    self.axes.plot([0, 1, 2, 3], l, 'r')
    self.axes.set_ylabel('動(dòng)態(tài)圖:Y軸')
    self.axes.set_xlabel('動(dòng)態(tài)圖:X軸')
    self.axes.grid(True)
    self.draw()

class MatplotlibWidget(QWidget):
def init(self, parent=None):
super(MatplotlibWidget, self).init(parent)
self.initUi()

def initUi(self):
    self.layout = QVBoxLayout(self)
    self.mpl = MyMplCanvas(self, width=5, height=4, dpi=100)
    # self.mpl.start_static_plot() # 如果你想要初始化的時(shí)候就呈現(xiàn)靜態(tài)圖缴淋,請(qǐng)把這行注釋去掉
    #self.mpl.start_dynamic_plot() # 如果你想要初始化的時(shí)候就呈現(xiàn)動(dòng)態(tài)圖准给,請(qǐng)把這行注釋去掉
    self.mpl_ntb = NavigationToolbar(self.mpl, self)  # 添加完整的 toolbar

    self.layout.addWidget(self.mpl)
    self.layout.addWidget(self.mpl_ntb)

if name == 'main':
app = QApplication(sys.argv)
ui = MatplotlibWidget()
ui.mpl.start_static_plot() # 測(cè)試靜態(tài)圖效果
# ui.mpl.start_dynamic_plot() # 測(cè)試動(dòng)態(tài)圖效果
ui.show()
sys.exit(app.exec_())

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泄朴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子露氮,更是在濱河造成了極大的恐慌祖灰,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件畔规,死亡現(xiàn)場(chǎng)離奇詭異局扶,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)油讯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門详民,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人陌兑,你說(shuō)我怎么就攤上這事沈跨。” “怎么了兔综?”我有些...
    開(kāi)封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵饿凛,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我软驰,道長(zhǎng)涧窒,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任锭亏,我火速辦了婚禮纠吴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘慧瘤。我一直安慰自己戴已,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布锅减。 她就那樣靜靜地躺著糖儡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪怔匣。 梳的紋絲不亂的頭發(fā)上握联,一...
    開(kāi)封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音每瞒,去河邊找鬼金闽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛剿骨,可吹牛的內(nèi)容都是我干的代芜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼懦砂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蜒犯!你這毒婦竟也來(lái)了组橄?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤罚随,失蹤者是張志新(化名)和其女友劉穎玉工,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體淘菩,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡遵班,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了潮改。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狭郑。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖汇在,靈堂內(nèi)的尸體忽然破棺而出翰萨,到底是詐尸還是另有隱情,我是刑警寧澤糕殉,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布亩鬼,位于F島的核電站,受9級(jí)特大地震影響阿蝶,放射性物質(zhì)發(fā)生泄漏雳锋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一羡洁、第九天 我趴在偏房一處隱蔽的房頂上張望玷过。 院中可真熱鬧,春花似錦筑煮、人聲如沸辛蚊。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嚼隘。三九已至诽里,卻和暖如春袒餐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谤狡。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工灸眼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人墓懂。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓焰宣,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親捕仔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匕积,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容