久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

  • <small id='a2o56'></small><noframes id='a2o56'>

    <legend id='a2o56'><style id='a2o56'><dir id='a2o56'><q id='a2o56'></q></dir></style></legend>

    • <bdo id='a2o56'></bdo><ul id='a2o56'></ul>
    1. <i id='a2o56'><tr id='a2o56'><dt id='a2o56'><q id='a2o56'><span id='a2o56'><b id='a2o56'><form id='a2o56'><ins id='a2o56'></ins><ul id='a2o56'></ul><sub id='a2o56'></sub></form><legend id='a2o56'></legend><bdo id='a2o56'><pre id='a2o56'><center id='a2o56'></center></pre></bdo></b><th id='a2o56'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='a2o56'><tfoot id='a2o56'></tfoot><dl id='a2o56'><fieldset id='a2o56'></fieldset></dl></div>

        <tfoot id='a2o56'></tfoot>

        如何使用pyqtgraph TimeAxisItem使X軸時間動態刷新

        How to make the X-axis time dynamically refresh by using pyqtgraph TimeAxisItem(如何使用pyqtgraph TimeAxisItem使X軸時間動態刷新)

          <tfoot id='NrTxi'></tfoot>
            <tbody id='NrTxi'></tbody>

        • <legend id='NrTxi'><style id='NrTxi'><dir id='NrTxi'><q id='NrTxi'></q></dir></style></legend>

            <small id='NrTxi'></small><noframes id='NrTxi'>

            <i id='NrTxi'><tr id='NrTxi'><dt id='NrTxi'><q id='NrTxi'><span id='NrTxi'><b id='NrTxi'><form id='NrTxi'><ins id='NrTxi'></ins><ul id='NrTxi'></ul><sub id='NrTxi'></sub></form><legend id='NrTxi'></legend><bdo id='NrTxi'><pre id='NrTxi'><center id='NrTxi'></center></pre></bdo></b><th id='NrTxi'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='NrTxi'><tfoot id='NrTxi'></tfoot><dl id='NrTxi'><fieldset id='NrTxi'></fieldset></dl></div>
                  <bdo id='NrTxi'></bdo><ul id='NrTxi'></ul>
                • 本文介紹了如何使用pyqtgraph TimeAxisItem使X軸時間動態刷新的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  我將根據一系列數據制作實時曲線.首先,我建立了一個數量字典,里面有 3 組數據.當前程序可以動態繪制曲線.X軸也可以顯示時間,也是實時更新的.但是,X 軸上不同點的時間始終是相同的值.

                  I'm going to make a real-time curve out of a sequence of data. First, I established a quantity dictionary, which has 3 groups of data. The current program can draw a curve dynamically. The X-axis can also show the time, which is also updated in real time. However, the time at different points in the X-axis is always the same value.

                  UNIX_EPOCH_naive = datetime.datetime(1970, 1, 1, 0, 0) #offset-naive datetime
                  UNIX_EPOCH_offset_aware = datetime.datetime(1970, 1, 1, 0, 0, tzinfo = pytz.utc) #offset-aware datetime
                  UNIX_EPOCH = UNIX_EPOCH_naive
                  
                  TS_MULT_us = 1e6
                  
                  def now_timestamp(ts_mult=TS_MULT_us, epoch=UNIX_EPOCH):
                      return(int((datetime.datetime.utcnow() - epoch).total_seconds()*ts_mult))
                  
                  def int2dt(ts, ts_mult=TS_MULT_us):
                      tz = pytz.timezone('Asia/Shanghai')
                      user_ts = int(time.time())
                      d1 = datetime.datetime.fromtimestamp(float(user_ts))
                      d1x = tz.localize(d1)
                      return(d1x)
                  
                  def dt2int(dt, ts_mult=TS_MULT_us, epoch=UNIX_EPOCH):
                      delta = dt - epoch
                      return(int(delta.total_seconds()*ts_mult))
                  
                  def td2int(td, ts_mult=TS_MULT_us):
                      return(int(td.total_seconds()*ts_mult))
                  
                  def int2td(ts, ts_mult=TS_MULT_us):
                      return(datetime.timedelta(seconds=float(ts)/ts_mult))
                  
                  class TimeAxisItem(pg.AxisItem):
                      def __init__(self, *args, **kwargs):
                          super(TimeAxisItem, self).__init__(*args, **kwargs)
                      def tickStrings(self, values, scale, spacing):
                          return [int2dt(value).strftime("%H:%M:%S") for value in values]
                  
                  p = win.addPlot(title="Data-Time Graph", axisItems={'bottom': TimeAxisItem(orientation='bottom')})
                  data_dict = {}
                  p.addLegend() 
                  data_x=[]
                  
                  
                  def getDate():
                      ......
                      .....
                      curve = p.plot(pen = color[len(data_dict)],name=name)
                      data_dict[name] = [curve] # dictionary: {key:[curve,[dadta1,data2,...]]}
                      data_dict[name].append([val])
                  
                  def addToDisplay():
                      p.plot()
                      for i in data_dict.items():
                          data = i[1][1] #
                          curve = i[1][0] #
                          if(len(data) > data_frequency):#
                               data_y=data[- data_frequency:]
                          else:
                               data_y = data[:]
                          curve.setData(data_y)#
                  
                  if __name__ == "__main__":
                      th= threading.Thread(target=getDate)# 
                      th.start()
                      timer = pg.QtCore.QTimer()
                      timer.timeout.connect(addToDisplay) 
                      timer.start(10)
                  

                  我希望X軸是動態刷新的,右邊是最近的時間,左邊是過去的時間.

                  What I hope is that the X-axis is dynamically refreshed, with the latest time on the right side and the past time is on the left side.

                  推薦答案

                  我不完全確定您想要實現什么,因為您的代碼沒有運行,但您似乎正在嘗試創建時間戳圖.這是一個使用 TimeAxisItem 來跟蹤 X 軸上經過的時間的小部件.

                  I'm not entirely sure what you're trying to achieve since your code doesn't run but it seems you're trying to create a timestamp plot. Here's a widget that uses TimeAxisItem to keep track of elapsed time on the X-axis.

                  PyQt5

                  from PyQt5 import QtCore, QtGui, QtWidgets
                  from threading import Thread
                  from collections import deque
                  import pyqtgraph as pg
                  import numpy as np
                  import random
                  import sys
                  import time
                  
                  """Scrolling Timestamp Plot Widget Example"""
                  
                  class TimeAxisItem(pg.AxisItem):
                      """Internal timestamp for x-axis"""
                      def __init__(self, *args, **kwargs):
                          super(TimeAxisItem, self).__init__(*args, **kwargs)
                  
                      def tickStrings(self, values, scale, spacing):
                          """Function overloading the weak default version to provide timestamp"""
                  
                          return [QtCore.QTime().currentTime().addMSecs(value).toString('mm:ss') for value in values]
                  
                  class ScrollingTimestampPlot(QtGui.QWidget):
                      """Scrolling plot widget with timestamp on x-axis and dynamic y-axis"""
                  
                      def __init__(self, parent=None):
                          super(ScrollingTimestampPlot, self).__init__(parent)
                  
                          # Internal timestamp for x-axis
                          self.timestamp = QtCore.QTime()
                          self.timestamp.start()
                  
                          # Desired Frequency (Hz) = 1 / self.FREQUENCY
                          # USE FOR TIME.SLEEP (s)
                          self.FREQUENCY = 0.025
                  
                          # Screen refresh rate to update plot (ms)
                          # self.SCROLLING_TIMESTAMP_PLOT_REFRESH_RATE = 1 / Desired Frequency (Hz) * 1000
                          # USE FOR TIMER.TIMER (ms)
                          self.SCROLLING_TIMESTAMP_PLOT_REFRESH_RATE = self.FREQUENCY * 1000
                  
                          self.DATA_POINTS_TO_DISPLAY = 200
                  
                          # Automatically pops from left if length is full
                          self.data = deque(maxlen=self.DATA_POINTS_TO_DISPLAY)
                  
                          # Create Plot Widget 
                          self.scrolling_timestamp_plot_widget = pg.PlotWidget(axisItems={'bottom': TimeAxisItem(orientation='bottom')})
                  
                          # Enable/disable plot squeeze (Fixed axis movement)
                          self.scrolling_timestamp_plot_widget.plotItem.setMouseEnabled(x=False, y=False)
                          self.scrolling_timestamp_plot_widget.setTitle('Scrolling Timestamp Plot Example')
                          self.scrolling_timestamp_plot_widget.setLabel('left', 'Value')
                          self.scrolling_timestamp_plot_widget.setLabel('bottom', 'Time (s)')
                  
                          self.scrolling_timestamp_plot = self.scrolling_timestamp_plot_widget.plot()
                          self.scrolling_timestamp_plot.setPen(246,212,255)
                  
                          self.layout = QtGui.QGridLayout()
                          self.layout.addWidget(self.scrolling_timestamp_plot_widget)
                  
                          self.read_position_thread()
                          self.start()
                  
                      def start(self):
                          """Update plot"""
                  
                          self.position_update_timer = QtCore.QTimer()
                          self.position_update_timer.timeout.connect(self.plot_updater)
                          self.position_update_timer.start(self.get_scrolling_timestamp_plot_refresh_rate())
                  
                      def read_position_thread(self):
                          """Read in data using a thread"""
                  
                          self.current_position_value = 0
                          self.position_update_thread = Thread(target=self.read_position, args=())
                          self.position_update_thread.daemon = True
                          self.position_update_thread.start()
                  
                      def read_position(self):
                          frequency = self.get_scrolling_timestamp_plot_frequency()
                          while True:
                              self.current_position_value = random.randint(1,101) 
                              time.sleep(frequency)
                  
                      def plot_updater(self):
                          self.data_point = float(self.current_position_value)
                  
                          self.data.append({'x': self.timestamp.elapsed(), 'y': self.data_point})
                          self.scrolling_timestamp_plot.setData(x=[item['x'] for item in self.data], y=[item['y'] for item in self.data])
                  
                      def clear_scrolling_timestamp_plot(self):
                          self.data.clear()
                  
                      def get_scrolling_timestamp_plot_frequency(self):
                          return self.FREQUENCY
                  
                      def get_scrolling_timestamp_plot_refresh_rate(self):
                          return self.SCROLLING_TIMESTAMP_PLOT_REFRESH_RATE
                  
                      def get_scrolling_timestamp_plot_layout(self):
                          return self.layout
                  
                      def get_current_position_value(self):
                          return self.current_position_value
                  
                      def get_scrolling_timestamp_plot_widget(self):
                          return self.scrolling_timestamp_plot_widget
                  
                  # Start Qt event loop unless running in interactive mode or using pyside
                  if __name__ == '__main__':
                      # Create main application window
                      app = QtWidgets.QApplication([])
                      app.setStyle(QtGui.QStyleFactory.create("Cleanlooks"))
                      mw = QtGui.QMainWindow()
                      mw.setWindowTitle('Scrolling Plot Example')
                  
                      # Create scrolling plot
                      scrolling_timestamp_plot_widget = ScrollingTimestampPlot()
                  
                      # Create and set widget layout
                      # Main widget container
                      cw = QtGui.QWidget()
                      ml = QtGui.QGridLayout()
                      cw.setLayout(ml)
                      mw.setCentralWidget(cw)
                  
                      # Can use either to add plot to main layout
                      #ml.addWidget(scrolling_timestamp_plot_widget.get_scrolling_timestamp_plot_widget(),0,0)
                      ml.addLayout(scrolling_timestamp_plot_widget.get_scrolling_timestamp_plot_layout(),0,0)
                      mw.show()
                  
                      if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
                          QtGui.QApplication.instance().exec_()
                  

                  PyQt4

                  from PyQt4 import QtCore, QtGui
                  from threading import Thread
                  from collections import deque
                  import pyqtgraph as pg
                  import numpy as np
                  import random
                  import sys
                  import time
                  
                  """Scrolling Timestamp Plot Widget Example"""
                  
                  class TimeAxisItem(pg.AxisItem):
                      """Internal timestamp for x-axis"""
                      def __init__(self, *args, **kwargs):
                          super(TimeAxisItem, self).__init__(*args, **kwargs)
                  
                      def tickStrings(self, values, scale, spacing):
                          """Function overloading the weak default version to provide timestamp"""
                  
                          return [QtCore.QTime().addMSecs(value).toString('mm:ss') for value in values]
                  
                  class ScrollingTimestampPlot(QtGui.QWidget):
                      """Scrolling plot widget with timestamp on x-axis and dynamic y-axis"""
                  
                      def __init__(self, parent=None):
                          super(ScrollingTimestampPlot, self).__init__(parent)
                  
                          # Internal timestamp for x-axis
                          self.timestamp = QtCore.QTime()
                          self.timestamp.start()
                  
                          # Desired Frequency (Hz) = 1 / self.FREQUENCY
                          # USE FOR TIME.SLEEP (s)
                          self.FREQUENCY = 0.025
                  
                          # Screen refresh rate to update plot (ms)
                          # self.SCROLLING_TIMESTAMP_PLOT_REFRESH_RATE = 1 / Desired Frequency (Hz) * 1000
                          # USE FOR TIMER.TIMER (ms)
                          self.SCROLLING_TIMESTAMP_PLOT_REFRESH_RATE = self.FREQUENCY * 1000
                  
                          self.DATA_POINTS_TO_DISPLAY = 200
                  
                          # Automatically pops from left if length is full
                          self.data = deque(maxlen=self.DATA_POINTS_TO_DISPLAY)
                  
                          # Create Plot Widget 
                          self.scrolling_timestamp_plot_widget = pg.PlotWidget(axisItems={'bottom': TimeAxisItem(orientation='bottom')})
                  
                          # Enable/disable plot squeeze (Fixed axis movement)
                          self.scrolling_timestamp_plot_widget.plotItem.setMouseEnabled(x=False, y=False)
                          self.scrolling_timestamp_plot_widget.setTitle('Scrolling Timestamp Plot Example')
                          self.scrolling_timestamp_plot_widget.setLabel('left', 'Value')
                          self.scrolling_timestamp_plot_widget.setLabel('bottom', 'Time (s)')
                  
                          self.scrolling_timestamp_plot = self.scrolling_timestamp_plot_widget.plot()
                          self.scrolling_timestamp_plot.setPen(246,212,255)
                  
                          self.layout = QtGui.QGridLayout()
                          self.layout.addWidget(self.scrolling_timestamp_plot_widget)
                  
                          self.read_position_thread()
                          self.start()
                  
                      def start(self):
                          """Update plot"""
                  
                          self.position_update_timer = QtCore.QTimer()
                          self.position_update_timer.timeout.connect(self.plot_updater)
                          self.position_update_timer.start(self.get_scrolling_timestamp_plot_refresh_rate())
                  
                      def read_position_thread(self):
                          """Read in data using a thread"""
                  
                          self.current_position_value = 0
                          self.position_update_thread = Thread(target=self.read_position, args=())
                          self.position_update_thread.daemon = True
                          self.position_update_thread.start()
                  
                      def read_position(self):
                          frequency = self.get_scrolling_timestamp_plot_frequency()
                          while True:
                              self.current_position_value = random.randint(1,101) 
                              time.sleep(frequency)
                  
                      def plot_updater(self):
                          self.data_point = float(self.current_position_value)
                  
                          self.data.append({'x': self.timestamp.elapsed(), 'y': self.data_point})
                          self.scrolling_timestamp_plot.setData(x=[item['x'] for item in self.data], y=[item['y'] for item in self.data])
                  
                      def clear_scrolling_timestamp_plot(self):
                          self.data.clear()
                  
                      def get_scrolling_timestamp_plot_frequency(self):
                          return self.FREQUENCY
                  
                      def get_scrolling_timestamp_plot_refresh_rate(self):
                          return self.SCROLLING_TIMESTAMP_PLOT_REFRESH_RATE
                  
                      def get_scrolling_timestamp_plot_layout(self):
                          return self.layout
                  
                      def get_current_position_value(self):
                          return self.current_position_value
                  
                      def get_scrolling_timestamp_plot_widget(self):
                          return self.scrolling_timestamp_plot_widget
                  
                  # Start Qt event loop unless running in interactive mode or using pyside
                  if __name__ == '__main__':
                      # Create main application window
                      app = QtGui.QApplication([])
                      app.setStyle(QtGui.QStyleFactory.create("Cleanlooks"))
                      mw = QtGui.QMainWindow()
                      mw.setWindowTitle('Scrolling Plot Example')
                  
                      # Create scrolling plot
                      scrolling_timestamp_plot_widget = ScrollingTimestampPlot()
                  
                      # Create and set widget layout
                      # Main widget container
                      cw = QtGui.QWidget()
                      ml = QtGui.QGridLayout()
                      cw.setLayout(ml)
                      mw.setCentralWidget(cw)
                  
                      # Can use either to add plot to main layout
                      #ml.addWidget(scrolling_timestamp_plot_widget.get_scrolling_timestamp_plot_widget(),0,0)
                      ml.addLayout(scrolling_timestamp_plot_widget.get_scrolling_timestamp_plot_layout(),0,0)
                      mw.show()
                  
                      if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
                          QtGui.QApplication.instance().exec_()
                  

                  這篇關于如何使用pyqtgraph TimeAxisItem使X軸時間動態刷新的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  How to bind a function to an Action from Qt menubar?(如何將函數綁定到 Qt 菜單欄中的操作?)
                  PyQt progress jumps to 100% after it starts(PyQt 啟動后進度躍升至 100%)
                  How to set yaxis tick label in a fixed position so that when i scroll left or right the yaxis tick label should be visible?(如何將 yaxis 刻度標簽設置在固定位置,以便當我向左或向右滾動時,yaxis 刻度標簽應該可見
                  `QImage` constructor has unknown keyword `data`(`QImage` 構造函數有未知關鍵字 `data`)
                  Change x-axis ticks to custom strings(將 x 軸刻度更改為自定義字符串)
                  How to show progress bar while saving file to excel in python?(如何在python中將文件保存為excel時顯示進度條?)

                        <tbody id='u978h'></tbody>
                      <legend id='u978h'><style id='u978h'><dir id='u978h'><q id='u978h'></q></dir></style></legend>

                          <bdo id='u978h'></bdo><ul id='u978h'></ul>

                          1. <i id='u978h'><tr id='u978h'><dt id='u978h'><q id='u978h'><span id='u978h'><b id='u978h'><form id='u978h'><ins id='u978h'></ins><ul id='u978h'></ul><sub id='u978h'></sub></form><legend id='u978h'></legend><bdo id='u978h'><pre id='u978h'><center id='u978h'></center></pre></bdo></b><th id='u978h'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='u978h'><tfoot id='u978h'></tfoot><dl id='u978h'><fieldset id='u978h'></fieldset></dl></div>
                          2. <tfoot id='u978h'></tfoot>

                            <small id='u978h'></small><noframes id='u978h'>

                            主站蜘蛛池模板: 国产精品久久久久久久久久 | 中文字幕亚洲国产 | 中文av在线播放 | 性生生活大片免费看视频 | 欧美三区 | 午夜电影网站 | 涩涩片影院 | 国产精品久久久亚洲 | www成年人视频 | 午夜影院免费体验区 | 成人亚洲精品久久久久软件 | 蜜桃日韩| 亚洲首页 | av中文字幕在线播放 | 欧美精品一区二区三区在线 | 波多野结衣精品在线 | 成人夜晚看av | 亚洲免费人成在线视频观看 | 91精品久久 | 久久久蜜桃 | 中国美女撒尿txxxxx视频 | www.av在线 | 在线色网| 日日操操操 | www.久久影视 | 欧美视频1 | 96av麻豆蜜桃一区二区 | 国产中文字幕网 | 欧美二区在线 | 精品一区二区三区在线视频 | 国产成人精品福利 | 免费三级网 | 中文精品视频 | 午夜ww| 第一福利社区1024 | 国产区久久 | 天天操天天操 | 亚洲久草 | 91在线成人 | 在线看日韩| 欧美视频一区二区三区 |