[英]Python, plotting all columns vs the first column (date) in a csv file
我有看起来像的csv文件
> 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;527;61;82;203;20;101
我想绘制第3列到第8列与第1列的关系图。因此,最后该图应显示针对日期绘制的6条线。
我已经使用以下命令读取csv文件
PlotList = np.loadtxt('myfile.csv',unpack = True, delimiter =';', converters={ 0 : mdates.strpdate2num('%d.%m.%Y') , 1 : mdates.strpdate2num('%H:%M:%S')} )
而且我正在尝试使用plt.plot_date(PlotList[0],PlotList[1])
但它没有给出期望的结果。
我如何绘制所有6个列与日期的关系?
编辑:我已经发布了下面的代码(解决方案)
快速解答,使用熊猫:
data = StringIO.StringIO('''date;time;a;b;c;d;e;f
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;527;61;82;203;20;101''')
dataframe = pd.read_csv( data, sep=';', index_col=0, parse_dates=True)
dataframe.plot()
plt.gcf().set_size_inches(8,3)
plt.gcf().tight_layout()
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 = {}
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(dates, values, label=key)
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d.%m.%Y'))
plt.gca().xaxis.set_major_locator(mdates.AutoDateLocator())
plt.gcf().autofmt_xdate()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.