【发布时间】:2016-04-11 14:45:49
【问题描述】:
我对 python 中的 matplotlib 相当陌生。我正在阅读一个包含每日日志的 csv 文件。但是,多行可能包含同一日期的数据。例如 07.04.2016
01.04.2016;08:39:09;527;61;42;203;20;211
02.04.2016;08:43:03;527;51;82;323;80;161
03.04.2016;08:43:20;627;21;82;103;20;102
04.04.2016;08:43:20;727;61;82;223;20;103
05.04.2016;08:43:20;227;71;82;263;20;104
06.04.2016;08:43:20;427;61;82;273;20;105
07.04.2016;08:43:20;177;51;22;103;80;106
07.04.2016;09:43:20;247;51;42;183;20;108
07.04.2016;10:43:20;127;51;82;103;20;106
08.04.2016;08:43:20;727;61;82;603;20;107
我有一个控制变量 num_days,它指定需要使用 matplotlib 绘制最近几天的数据。
import csv
import datetime as dt
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
col_names = ["a","b","c","d","e","f"]
my_dict = {}
num_days = 5
for item in range(0, 6):
my_dict[col_names[item]] = []
with open("myfile.csv","r") as f:
spamreader = csv.reader(f,delimiter=";")
for row in spamreader:
for col in range(2 , len(row)):
my_dict[col_names[col-2]].append([row[0],row[col]])
f.close()
for key, data_list in my_dict.items():
dates_str, values = zip(*data_list)
dates = [dt.datetime.strptime(d,'%d.%m.%Y').date() for d in dates_str]
plt.plot_date(dates[-num_days:], values[-num_days:], label=key, fmt='-')
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d.%m.%Y'))
plt.gca().xaxis.set_major_locator(mdates.AutoDateLocator())
plt.gcf().autofmt_xdate()
plt.savefig('Image.png')
在我的代码中,它只绘制最新的行数,而不是最新的日期数。在上面的示例中,它将仅绘制最后 5 行。但是,它应该绘制从 04.04.2016 到 08.04.2016 的数据。我怎样才能实现这个功能?
【问题讨论】:
标签: python date csv matplotlib plot