如何在matplotlib中创建日期标记,就像在CSV数据中一样?

时间:2017-03-19 10:00:32

标签: python date matplotlib time

我是菜鸟,我制作了采用最新CSV的脚本,并用matplotlib绘制图形。但我的日期显示小时,分钟,秒,我猜几毫秒。在CSV中,我有几年,几个月,几天,几小时,几分钟和几秒钟。如何以最简单和noob友好的方式调整我的代码,以CSV格式显示日期?

Python脚本:

query = "UPDATE LDV SET received = @received, department = @department WHERE Id = @Id ";
command.Parameters.AddWithValue("@Id", idTxt.Text);

我的csv数据:

from matplotlib import pyplot, dates
from csv import reader
from dateutil import parser
import os
import time
import pylab
import datetime
from datetime import datetime
os.chdir('/home/pi/csvdata')

def plotloop():
    for plotinsideloop in range(24):
        dated_files = [(os.path.getmtime(fn), os.path.basename(fn)) 
            for fn in os.listdir("/home/pi/csvdata") if fn.lower().endswith('.csv')]
        dated_files.sort()
        dated_files.reverse()
        newest = dated_files[0][1]
        with open(newest) as f:
            data = list(reader(f))
        humidity = [i[1] for i in data]
        dates1 = [i[0] for i in data]
        dates = [datetime.strptime(i, '%X %x') for i in dates1]
        pyplot.ylim(50,1000)
        pyplot.xticks(rotation=15)
        pyplot.plot(dates, humidity)
        pyplot.savefig("test.png", dpi=72)
        pyplot.savefig("test.pdf")
        print ("Done")
        print(newest)
        time.sleep(5)
plotloop()

我的图表:

enter image description here

Excel中的CSV屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:0)

最简单的方法可能是直接设置日期格式。为此,您需要在plot命令之前添加以下内容:

pyplot.gca().xaxis.set_major_formatter(matplotlib.dates.DateFormatter("%x %H:%M"))

您还需要从

稍微更改导入
from matplotlib import pyplot, dates

from matplotlib import pyplot
import matplotlib.dates

这是必要的,因为虽然您已经从matplotlib导入日期,但您也可以稍后定义一个名为日期的列表。

因此,作为解释,函数gca()使您可以访问Axes对象。有了这个,你可以做很多事情。见http://matplotlib.org/2.0.0/api/axes_api.html#matplotlib.axes.Axes