我在几个电台有一个功率电平的csv文件(在这种情况下为4,但是#34; HUT4和#34;不在这个简短的摘录中):
2014-06-21T20:03:21,HUT3,74
2014-06-21T21:03:16,HUT1,70
2014-06-21T21:04:31,HUT3,73
2014-06-21T21:04:33,HUT2,30
2014-06-21T22:03:50,HUT3,64
2014-06-21T23:03:29,HUT1,60
(etc . .)
跨站的时间不同步。功率水平(在这种情况下)是整数百分比。有些机器以伏特(~13.0)报告,这在绘图时会是一个额外的问题。
数据很容易读入数据框,索引数据框,放入字典中。但我无法获得正确的语法来制作有意义的情节。在单个地块上的所有站点共享对于所有站点足够大的时间线,或者作为单独的地块,可以是每个站点的子图。如果我这样做:
import pandas as pd
df = pd.read_csv('Power_Log.csv',names=['DT','Station','Power'])
df2=df.groupby(['Station']) # set 'Station' as the data index
d = dict(iter(df2)) # make a dictionary including each station's data
for stn in d.keys():
d[stn].plot(x='DT',y='Power')
plt.legend(loc='lower right')
plt.savefig('Station_Power.png')
我确实得到了一个情节,但X轴并不适合每个电台。
我还没想出如何做四个独立的子图,这将使我无法制作足够宽的时间尺度。
我非常感谢有关获得单个情节和/或获得好看的子情节的评论。子图不需要同步X轴。
答案 0 :(得分:0)
我宁愿绘制典型的方式,如:
import matplotlib.pyplot as plt
plt.plot([1,2,3,4], [1,4,9,16], 'ro')
plt.axis([0, 6, 0, 20])
plt.savefig()
(http://matplotlib.org/users/pyplot_tutorial.html)
更多子图:只需多次调用plt.plot()
,每个数据系列一次。
P.S。你可以用这种方式设置xticks:Changing the "tick frequency" on x or y axis in matplotlib?
答案 1 :(得分:0)
很抱歉上面的评论我需要添加代码。还在学习 。
从第5行代码开始:
import matplotlib.dates as mdates
for stn in d.keys():
plt.figure()
d[stn].interpolate().plot(x='DT',y='Power',title=stn,rot=45)
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%D/%M/%Y'))
plt.savefig('Station_Power_'+stn+'.png')
除了DateFormatter行之外,我想做什么或多或少都不起作用。我想缩短我的日期时间数据以显示日期。如果它在午夜放置蜱,那将是辉煌但不是绝对必要的。
获得连续绘图的关键是在绘图中使用interpolate()方法。
由于这些数据在不同站点之间具有不同的x比例,因此同一图表上所有站点的图表都不起作用。即使日期时间值与其他HUT的范围大致相同,我的数据中的HUT4记录也少得多,而且只有大约25%的比例。