我正在制作一個實時應用程式, 以實時方式繪制傳感器資料。
資料保存到 .csv 檔案并使用 matplotlib 以下列方式繪制圖形:
class Scope:
def __init__(self, ax, ax2, f, maxt=2000, dt=0.02):
self.ax = ax
self.ax2 = ax2
self.maxt = maxt
self.f = f
self.tdata = []
self.ydata = []
self.humdata = []
self.tempdata = []
self.TVOCdata = []
self.ax.set_ylim(0, 1023)
self.ax.set_xlim(0, self.maxt)
self.ax2.set_ylim(0, 100)
self.ax2.set_xlim(0, self.maxt)
self.line, = ax.plot(self.tdata, self.ydata)
self.line2, = ax2.plot(self.tdata, self.humdata)
self.line3, = ax2.plot(self.tdata, self.tempdata, 'g-')
self.line4, = ax.plot(self.tdata, self.TVOCdata)
def animate(self, y):
if path.exists(self.f):
data = pd.read_csv(self.f)
self.tdata.append(data['dur'].iloc[-1])
self.ydata.append(data['CO2'].iloc[-1])
self.line.set_data(self.tdata, self.ydata)
self.line.set_label('CO2')
我想將時間軸的表示從秒更改為小時,因為我正在進行的測量可能一次持續數天。有沒有一種方便的方法可以做到這一點?非常感謝任何形式的幫助。
uj5u.com熱心網友回復:
找到了解決這個問題的方法。關鍵是使用ticker FuncFormatter-subclass來自定義x軸的刻度,方法如下:
formatter = matplotlib.ticker.FuncFormatter(lambda s, x: time.strftime('%H:%M',time.gmtime(s // 60)))
self.ax.xaxis.set_major_formatter(mticker.FuncFormatter(formatter))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/461692.html
標籤:Python matplotlib 即时的 传感器
