在python中使用drawnow绘图

2024-05-02 20:41:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图实时监控传感器数据,但图中什么也没显示,下面只是一个示例。 谁能向我解释一下为什么结果什么都没显示出来

enter image description here

import datetime
import random
import matplotlib.pyplot as plt
from drawnow import *
from matplotlib.dates import AutoDateLocator, AutoDateFormatter, date2num

i = 0
x = 0
y = 0
FirstTime = str('00:00')
LastTime = str('00:00')

def CreatePlot():
    figure = plt.subplot()
    plt.plot([],[])
    date_datetime = datetime.datetime.strptime(LastTime, '%H:%M')
    int_date = date2num( date_datetime)
    locator = AutoDateLocator()
    figure.xaxis.set_major_locator(locator)
    figure.xaxis.set_major_formatter( AutoDateFormatter(locator) )
    min_date = date2num( datetime.datetime.strptime(FirstTime, '%H:%M') )
    max_date = date2num( datetime.datetime.strptime(LastTime, '%H:%M') )
    plt.xlim(min_date, max_date)
    plt.plot(x,y, 'r-')
    plt.gcf().autofmt_xdate()

while True:
    x = datetime.datetime.now() + datetime.timedelta(minutes=i)
    x = datetime.datetime.strftime(x,'%H:%M')
    if i == 0:
        FirstTime = x
    else:
        LastTime = x
    y = (2*i)+2
    if i>500:
        break
    else:
        drawnow(CreatePlot)
        plt.pause(0.0001)
        i+=1

Tags: fromimportdatetimedatematplotlibpltfigurelocator
1条回答
网友
1楼 · 发布于 2024-05-02 20:41:20

我解决了这个问题,所以我要解释给像我这样的人, 第一个问题是将日期格式更改为带strftime的字符串, x轴中的打印字符串不是自动格式化的, 以下命令也是冗余的:

min_date = date2num( datetime.datetime.strptime(FirstTime, '%H:%M') )
max_date = date2num( datetime.datetime.strptime(LastTime, '%H:%M') )
plt.xlim(min_date, max_date)

此外,为了获得更好的视图,用户还可以添加以下命令:

from matplotlib.ticker import AutoMinorLocator
from matplotlib.dates import AutoDateLocator, AutoDateFormatter
.
.
.
.
ax0 = plt.subplot(2,2,1)
locator = AutoDateLocator()
ax0.xaxis.set_major_locator(locator)
formatter = AutoDateFormatter(locator)
ax0.xaxis.set_major_formatter(formatter)
ax0.xaxis.set_minor_locator(AutoMinorLocator())

相关问题 更多 >