これがあなたにとって意味があるかどうか教えてください。私はこの例をまとめましたが、それは最も美しいものではありません。重要なのは、plot_time(ars...) を使用して、matplotlib に数値を探して正しくフォーマットするように指示することだと思います。
python[2.7.2]、matplotlib、numpy を使用:
import numpy as np
from matplotlib import pyplot as plt
import random, sys
from datetime import datetime, timedelta
import time
tWindow=1 #moving window in minutes
timeList=[datetime.now()]
valList=[random.randint(1, 20)]
fig = plt.figure() #Make a figure
ax = fig.add_subplot(111) #Add a subplot
#Create the line with initial data using plot_date to add time to the x axis
line,=plt.plot_date(timeList, valList, linestyle='-')
#Set the x limits to the time window
ax.set_xlim([datetime.now()-timedelta(seconds=tWindow*60),datetime.now()])
#set the y limits
ax.set_ylim(0,20)
#grab the blank background to clear the plot later
background = fig.canvas.copy_from_bbox(ax.bbox)
#show the figure
fig.show()
#loop
for i in range(100):
#restore the background
fig.canvas.restore_region(background)
#add time to time list
timeList.append(datetime.now())
#add random value to values
valList.append(random.randint(1, 20))
#update the line data
line.set_data(timeList,valList)
#update x limits
ax.set_xlim([datetime.now()-timedelta(seconds=tWindow*60),datetime.now()])
#redraw widnow
fig.canvas.draw()
#pause the loop for .5 seconds
time.sleep(0.5)
プロデュース:
アップデート:
あなたが取り組んでいると思われるコードを含むあなたの他の投稿を見つけました。
交換してみる
self.l_user, = self.ax.plot([],self.user, label='Total %')
と
self.l_user, = self.ax.plot_date([],self.user, label='Total %')
タイムスタンプを matplotlib に渡すことができるようになりました。
def timerEvent(self, evt):
# get the cpu percentage usage
result = self.get_cpu_usage()
# append new data to the datasets
self.user.append(result[0])
# update lines data using the lists with new data
self.l_user.set_data(range(len(self.user)), self.user)
# force a redraw of the Figure
self.fig.canvas.draw()
#else, we increment the counter
self.cnt += 1
の行に沿って何かをやってみてください
def timerEvent(self, evt):
# get the cpu percentage usage
result = self.get_cpu_usage()
# append new data to the datasets
self.user.append(result[0])
#save the current time
self.timeStamp.append(datetime.now())
# update lines data using the lists with new data
self.l_user.set_data(self.timeStamp, self.user)
#rescale the x axis maintaining a 5 minutes window
self.ax.set_xlim([datetime.now()-timedelta(seconds=5*60),datetime.now()])
# force a redraw of the Figure, this might not update the x axis limits??
self.fig.canvas.draw()
#else, we increment the counter
self.cnt += 1
適切なインポートと変数の初期化
from datetime import datetime, timedelta
class CPUMonitor(FigureCanvas):
"""Matplotlib Figure widget to display CPU utilization"""
def __init__(self):
...
self.timeStamp=[]
...