欧美阿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人导航| 亚洲电影视频在线| www.性欧美| 婷婷社区五月天| 国产亚洲视频系列| 久久99精品久久久久久动态图| 天堂久久久久久| 51精品国自产在线| 亚洲国产视频一区| 亚洲av午夜精品一区二区三区| 91成人免费在线| 亚洲欧美成人一区二区三区| www.欧美.com| 欧美在线观看你懂的| 尤物在线观看一区| 中国男女全黄大片| 欧美日韩免费电影| 亚洲mv在线观看| 久久精品女同亚洲女同13| 678五月天丁香亚洲综合网| 亚洲一区国产视频| 亚洲成年人av| 91精品国产综合久久久蜜臀粉嫩 | 中文字幕中文字幕一区| 国产成人自拍网| 色哟哟亚洲精品| 亚洲女人的天堂| 久久久无码人妻精品无码| 欧美日韩欧美一区二区| 偷窥少妇高潮呻吟av久久免费| xxxx黄色片| 精品国产乱码久久| 国产乱码字幕精品高清av| 最新一区二区三区| 樱花草国产18久久久久| 视频免费在线观看| 久久综合九色欧美综合狠狠| 久久精品国产精品亚洲精品| 操她视频在线观看| 最新高清无码专区| 国产伦精品一区二区三区88av| 日韩视频免费观看高清完整版| 在线电影国产精品| 午夜精品久久久久久久久| 熟女丰满老熟女熟妇| 国产欧美一区二区精品性色| 成人av电影在线| 在线成人小视频| 精品一区二区三区视频| 国产精品白嫩白嫩大学美女| 亚洲综合色自拍一区| 久久久国产精品无码| 欧美激情在线一区二区三区| 91理论电影在线观看| 91精品国产一区二区三区蜜臀| 精品制服美女丁香| 色综合中文综合网| 亚洲成在线观看| 日韩女同一区二区三区| 日韩毛片高清在线播放| 男男一级淫片免费播放| 国产清纯白嫩初高生在线观看91| 97se亚洲国产综合在线| 欧美一级在线观看| 丰满亚洲少妇av| 678五月天丁香亚洲综合网| 国产一区二区三区精品视频| 欧美亚洲动漫精品| 久久99精品国产麻豆婷婷| 中文字幕在线观看成人| 日韩成人免费电影| 五月婷婷一区二区| 男女激情视频一区| 色婷婷国产精品| 九色综合国产一区二区三区| 欧美在线观看视频在线| 国产在线精品一区二区不卡了| 欧美综合视频在线观看| 美女爽到高潮91| 日本精品视频一区二区三区| 久久国产视频网| 欧美在线综合视频| 国产资源在线一区| 8x8x8国产精品| 成人听书哪个软件好| 日韩欧美不卡在线观看视频| av亚洲精华国产精华精华| 精品国产一区二区精华| 欧美xxxx日本和非洲| 日本一区二区三区在线观看| 精品无码国产一区二区三区51安| 亚洲日本青草视频在线怡红院 | 日韩欧美视频在线| 97成人超碰视| 欧美精彩视频一区二区三区| 人人妻人人澡人人爽人人精品| 亚洲欧美日韩久久| 欧美巨胸大乳hitomi| 日精品一区二区| 欧洲精品一区二区三区在线观看| 国产乱人伦偷精品视频免下载| 欧美一级精品在线| 又色又爽又黄18网站| 亚洲色欲色欲www在线观看| 婷婷丁香综合网| 免费黄网站欧美| 欧美高清视频www夜色资源网| 99热在这里有精品免费| 亚洲国产成人午夜在线一区| 亚洲无人区码一码二码三码的含义| 午夜精品123| 欧美日韩免费视频| 宇都宫紫苑在线播放| 日韩一区在线看| 亚洲精品国产精品乱码在线观看| 蜜桃视频一区二区| 欧美一区二区成人| 一级黄色电影片| 亚洲国产成人91porn| 欧美日韩在线综合| 91论坛在线播放| 樱桃国产成人精品视频| 欧美亚洲图片小说| 99在线热播精品免费| 亚洲欧洲av另类| 国产高清在线免费观看| 懂色中文一区二区在线播放| 欧美国产在线观看| 中文字幕第69页| 国产精品一区二区久久精品爱涩| 久久久久久免费网| 国产精品成人在线视频| 激情综合网激情| 久久久久国产精品麻豆ai换脸 | 久久精品男人天堂av| 在线免费看黄视频| 久久精品国产亚洲5555| 久久五月婷婷丁香社区| 农村老熟妇乱子伦视频| 国产精品夜夜爽| 国产精品嫩草久久久久| 午夜精品一区二区三区视频| 北岛玲一区二区三区四区| 亚洲免费在线看| 欧美午夜在线观看| 动漫美女无遮挡免费| 天天射综合影视| 日韩你懂的电影在线观看| 国产女主播喷水高潮网红在线| 久久国产精品色婷婷| 国产片一区二区三区| 91高清免费观看| 99国产精品久久久久久久久久久| 伊人色综合久久天天| 7777精品伊人久久久大香线蕉完整版 | 国产aaaaaaaaa| 国产91综合网| 亚洲欧美偷拍另类a∨色屁股| 欧美三级三级三级爽爽爽| a天堂视频在线观看| 免费黄网站欧美| 中文在线一区二区| 日本高清免费不卡视频| 成年人小视频在线观看| 美女视频黄 久久| 国产精品免费久久| 欧美日韩一区二区三区在线看 | 成人国产精品久久久网站| 国产一区二区福利视频| 成人免费在线视频| 欧美日韩午夜影院| 亚洲精品成人av久久| 99国产精品国产精品毛片| 香港成人在线视频| 久久九九国产精品| 欧美午夜片在线观看| 99久久久久久久久久| 国产69精品久久777的优势| 亚洲与欧洲av电影| www亚洲一区| 色8久久精品久久久久久蜜| 国产乱了高清露脸对白| 国产成人午夜精品影院观看视频| 亚洲香蕉伊在人在线观| 久久精品亚洲精品国产欧美| 在线观看精品一区| www.av天天| 91美女片黄在线| 黄页网站大全一区二区| 亚洲精品成人天堂一二三| 精品成人在线观看| 91成人免费网站| 微拍福利一区二区| 永久看看免费大片| 国产制服丝袜一区| 亚洲成人一区二区在线观看| av男人的天堂av|