欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > Pyqt+matplotlib 實現實時畫圖案例

Pyqt+matplotlib 實現實時畫圖案例

熱門標簽:汕頭電商外呼系統供應商 北京外呼電銷機器人招商 云南地圖標注 400電話 申請 條件 鄭州智能外呼系統中心 crm電銷機器人 賓館能在百度地圖標注嗎 電銷機器人 金倫通信 南京crm外呼系統排名

需求分析:

項目中根據測得的數據在界面上實時繪制

運行環境:

Python 3.7 + Matplotlib 3.0.2 + PyQt 5

matplot官網給的相應的例子:

import sys
import time
import numpy as np
from matplotlib.backends.qt_compat import QtCore, QtWidgets, is_pyqt5
if is_pyqt5():
  from matplotlib.backends.backend_qt5agg import (
    FigureCanvas, NavigationToolbar2QT as NavigationToolbar)
else:
  from matplotlib.backends.backend_qt4agg import (
    FigureCanvas, NavigationToolbar2QT as NavigationToolbar)
from matplotlib.figure import Figure
class ApplicationWindow(QtWidgets.QMainWindow):
  def __init__(self):
    super().__init__()
    self._main = QtWidgets.QWidget()
    self.setCentralWidget(self._main)
    layout = QtWidgets.QVBoxLayout(self._main)
    static_canvas = FigureCanvas(Figure(figsize=(5, 3)))
    layout.addWidget(static_canvas)
    self.addToolBar(NavigationToolbar(static_canvas, self))
    dynamic_canvas = FigureCanvas(Figure(figsize=(5, 3)))
    layout.addWidget(dynamic_canvas)
    self.addToolBar(QtCore.Qt.BottomToolBarArea,
            NavigationToolbar(dynamic_canvas, self))
    self._static_ax = static_canvas.figure.subplots()
    t = np.linspace(0, 10, 501)
    self._static_ax.plot(t, np.tan(t), ".")
    self._dynamic_ax = dynamic_canvas.figure.subplots()
    self._timer = dynamic_canvas.new_timer(
      100, [(self._update_canvas, (), {})])
    self._timer.start()
  def _update_canvas(self):
    self._dynamic_ax.clear()
    t = np.linspace(0, 10, 101)
    # Shift the sinusoid as a function of time.
    self._dynamic_ax.plot(t, np.sin(t + time.time()))
    self._dynamic_ax.figure.canvas.draw()
if __name__ == "__main__":
  qapp = QtWidgets.QApplication(sys.argv)
  app = ApplicationWindow()
  app.show()
  qapp.exec_()

上圖中的散點為靜止的,下面的圖為動態的,類似行波,一直在行走,是應為用了**self._dynamic_ax.plot(t, np.sin(t + time.time()))**函數,但是這個和我想得實時畫圖不太一樣,在項目中要根據生成的數據實時繪圖,因此x軸的元素和y軸的元素個數是逐漸增加的。

通過閱讀上述 _update_canvas 函數代碼以及 dynamic_canvas.new_timer 可以使得每次調用_update_canvas是的相應的x的元素和y軸的元素增加更改后的代碼如下:

import sys
import time
import numpy as np
from matplotlib.backends.qt_compat import QtCore, QtWidgets, is_pyqt5
if is_pyqt5():
  from matplotlib.backends.backend_qt5agg import (
    FigureCanvas, NavigationToolbar2QT as NavigationToolbar)
else:
  from matplotlib.backends.backend_qt4agg import (
    FigureCanvas, NavigationToolbar2QT as NavigationToolbar)
from matplotlib.figure import Figure
class ApplicationWindow(QtWidgets.QMainWindow):
  def __init__(self):
    super().__init__()
    self._main = QtWidgets.QWidget()
    self.setCentralWidget(self._main)
    layout = QtWidgets.QVBoxLayout(self._main)
    static_canvas = FigureCanvas(Figure(figsize=(5, 3)))
    layout.addWidget(static_canvas)
    self.addToolBar(NavigationToolbar(static_canvas, self))
    dynamic_canvas = FigureCanvas(Figure(figsize=(5, 3)))
    layout.addWidget(dynamic_canvas)
    self.addToolBar(QtCore.Qt.BottomToolBarArea,
            NavigationToolbar(dynamic_canvas, self))
    self._static_ax = static_canvas.figure.subplots()
    t = np.linspace(0, 10, 501)
    self._static_ax.plot(t, np.tan(t), ".")
    self.x = [] #建立空的x軸數組和y軸數組
    self.y = []
    self.n = 0
    self._dynamic_ax = dynamic_canvas.figure.subplots()
    self._timer = dynamic_canvas.new_timer(
      100, [(self._update_canvas, (), {})])
    self._timer.start()
    
  def _update_canvas(self):
    self.n += 1
    if self.n == 200:      #畫200個點就停止,根據實際情況確定終止條件
      self._timer.stop()   
    self._dynamic_ax.clear()
    self.x.append(np.pi/100*self.n) #x加入一個值,后一個值比前一個大pi/100
    xx = np.array(self.x)
    # t = np.linspace(0, 10, 101)
    # Shift the sinusoid as a function of time.
    self._dynamic_ax.plot(xx, np.sin(xx))
    self._dynamic_ax.set_xlim(0,7)
    self._dynamic_ax.set_ylim(-1,1)
    self._dynamic_ax.figure.canvas.draw()
if __name__ == "__main__":
  qapp = QtWidgets.QApplication(sys.argv)
  app = ApplicationWindow()
  app.show()
  qapp.exec_()

上面的圖仍然靜止,下面的可以實時顯示

補充:pyqtgraph實時繪圖出現無法刷新問題

pyqtgraph實時繪圖時,會概率出現無法實時刷新繪制圖,原因是

while True:
  ......
  update()  # 通過 plotitem.setData()更新數據
  ......

這里使用的是while循環,不斷的更新數據概率出現繪圖不刷新和操作不響應(最小化操作會高概率出現該問題)

解決方法1:

我使用的是PlotWidget,remove后再addwidget,然后再重新繪制

解決方法2:

不使用while循環,使用QTime定時器

t = QTimer()
t.timeout.connect(self.update)
t.start(10)

兩種方法都可以解決這個問題,推薦方法2

據說使用while循環,需要在更新數據之后調用pg.QtGui.QApplication.processEvents()才能確保正常,這個本人試了不行,可能是我這邊的原因吧

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • python學習之使用Matplotlib畫實時的動態折線圖的示例代碼
  • python中plot實現即時數據動態顯示方法
  • 利用matplotlib實現根據實時數據動態更新圖形

標簽:浙江 文山 西寧 梅州 石家莊 懷化 昆明 錫林郭勒盟

巨人網絡通訊聲明:本文標題《Pyqt+matplotlib 實現實時畫圖案例》,本文關鍵詞  Pyqt+matplotlib,實現,實時,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Pyqt+matplotlib 實現實時畫圖案例》相關的同類信息!
  • 本頁收集關于Pyqt+matplotlib 實現實時畫圖案例的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    狠狠色伊人亚洲综合成人| av在线播放网址| 九一在线免费观看| 日韩精品一区在线| 日韩av网站免费在线| 逼特逼视频在线观看| 欧美日韩一区成人| 一卡二卡欧美日韩| av不卡中文字幕| 97免费公开视频| 91精品福利在线| 一区二区三区四区蜜桃 | 国产午夜手机精彩视频| 欧美高清在线一区二区| 国产不卡视频在线播放| 黄色a级片在线观看| 中文字幕日本不卡| 91美女在线观看| 欧美日韩精品欧美日韩精品| 亚洲国产综合在线| 国产伦精品一区三区精东| 日韩一二三四区| 久久成人麻豆午夜电影| 国产精品天天干| 中文字幕巨乱亚洲| 97se亚洲国产综合自在线不卡 | 亚洲美女一区二区三区| 91蝌蚪porny成人天涯| 欧美色综合网站| 视频在线在亚洲| 老熟妇一区二区| 国产精品久久久久四虎| 91亚洲精品久久久蜜桃| 欧美精选一区二区| 蜜桃久久av一区| 成年人免费视频播放| 亚洲欧洲av在线| 欧美熟妇精品一区二区| 日韩欧美一区电影| 国产激情视频一区二区三区欧美 | 久久久国产精品久久久| 欧美一区2区视频在线观看| 久久99精品久久只有精品| 成人在线观看高清| 亚洲高清免费观看| 久久久久久国产免费a片| 国产精品二三区| 免费看黄色片的网站| 久久色.com| 99精品视频在线播放观看| 69久久夜色精品国产69蝌蚪网| 精品一区二区综合| 色婷婷亚洲综合| 免费一级片91| 日本妇女毛茸茸| 日韩av一级片| 色综合久久久久久久| 日韩电影在线一区| 卡通动漫亚洲综合| 日本三级亚洲精品| 久久99久久99精品免费看小说| 亚洲精品国产第一综合99久久 | 精品99999| 99久久婷婷国产精品综合| 国产草草浮力影院| 久久久精品2019中文字幕之3| 91一区二区在线| www国产亚洲精品久久麻豆| 99精品国产99久久久久久白柏| 日韩欧美国产wwwww| a美女胸又www黄视频久久| 日韩一级二级三级| 无码人妻一区二区三区在线视频| 26uuu国产在线精品一区二区| 人妻激情偷乱视频一区二区三区| 久久人人爽人人爽| 俄罗斯黄色录像| 国产精品高潮呻吟| 极品蜜桃臀肥臀-x88av| 亚洲一区二区三区四区五区中文 | 国产午夜精品久久| 国产真实乱人偷精品| 国产精品嫩草99a| 97超碰在线资源| 亚洲国产精品一区二区久久| 911国产在线| 麻豆成人av在线| 欧美日韩欧美一区二区| 国模一区二区三区白浆| 在线成人高清不卡| 99精品1区2区| 欧美国产日韩精品免费观看| jizz欧美性20| 亚洲五码中文字幕| 色综合久久中文综合久久97| 精品午夜久久福利影院| 欧美一区日本一区韩国一区| 不卡欧美aaaaa| 国产女人18毛片水真多成人如厕| 国产精品无码一区二区三| 一区二区在线观看视频在线观看| 国产视频不卡在线| 奇米影视在线99精品| 欧美日本在线播放| 91在线porny国产在线看| 国产精品丝袜黑色高跟| 阿v天堂2014| 免费人成网站在线观看欧美高清| 欧美日韩精品一区二区天天拍小说 | 国产精品一区二区三区99| 欧美成人精品1314www| 伊人网综合视频| 亚洲与欧洲av电影| 欧美在线你懂的| 99久久精品免费观看| 国产精品不卡视频| 成人涩涩小片视频日本| 国产成人精品免费一区二区| 国产日韩欧美制服另类| 国产传媒国产传媒| 韩国av一区二区| 久久久久久9999| 人与嘼交av免费| 国产一区二区精品久久99| 久久你懂得1024| 国产又粗又猛又爽又黄的视频四季 | 69xxx免费| 国产精品主播直播| 久久久亚洲欧洲日产国码αv| 男人舔女人下部高潮全视频| 看片网站欧美日韩| 久久蜜桃av一区精品变态类天堂 | 亚洲成人手机在线| 欧美另类变人与禽xxxxx| 秘密基地免费观看完整版中文| 亚洲国产精品一区二区久久| 欧美精品成人一区二区三区四区| 伦理片一区二区| 蜜臀av一区二区| 久久亚洲综合色| 人与动物性xxxx| jlzzjlzz国产精品久久| 亚洲美女区一区| 欧美二区在线观看| 欧美成人午夜精品免费| 精品一区精品二区高清| 国产精品三级av| 91黄色小视频| www.男人天堂| 九九国产精品视频| 中文字幕 久热精品 视频在线 | 天天色天天综合| av午夜精品一区二区三区| 亚洲图片一区二区| 欧美成人video| 黑人狂躁日本娇小| 99久久伊人精品| 日韩av成人高清| 国产婷婷色一区二区三区在线| 欧美a级片免费看| 韩国三级在线看| 精品一区二区三区视频| 中文字幕一区二区在线播放| 欧美视频一区二区三区四区| 日韩片在线观看| 成人在线综合网站| 伊人性伊人情综合网| 日韩欧美国产一区二区在线播放| 中国美女黄色一级片| 91原创在线视频| 蜜臀av亚洲一区中文字幕| 中文字幕国产精品一区二区| 欧美性猛交一区二区三区精品| 国产肉体xxxx裸体784大胆| 国产精品资源在线看| 一区二区三区美女| 精品国产欧美一区二区| 色综合一个色综合亚洲| 日本一卡二卡在线| 高清不卡一区二区在线| 亚洲bdsm女犯bdsm网站| 国产亚洲欧美日韩在线一区| 欧美性猛交xxxx乱大交退制版| www.久久国产| 97久久精品人人澡人人爽| 美女诱惑一区二区| 中文字幕日本乱码精品影院| 日韩视频一区二区三区| 69av.com| 超碰97人人干| 91麻豆国产福利精品| 精东粉嫩av免费一区二区三区| 亚洲黄色av一区| 久久精品视频一区二区| 欧美日韩国产影片| 欧美a在线播放| 丰满岳乱妇一区二区| 成人aa视频在线观看| 久久爱www久久做| 亚洲中国最大av网站|