【问题标题】:Plotting multiple timeseries power data using matplotlib and pandas使用 matplotlib 和 pandas 绘制多个时间序列功率数据
【发布时间】:2014-07-29 16:30:06
【问题描述】:

我有几个站点的功率级别的 csv 文件(在这种情况下是 4 个,尽管“HUT4”不在这个简短的摘录中):

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 轴都不正确。

我还没有弄清楚如何制作四个独立的子图,这样我就不用制作足够宽的时间尺度了。

我将非常感谢 cmets 获得正确的单个情节和/或获得好看的子情节。子图不需要有同步的 X 轴。

【问题讨论】:

    标签: python matplotlib pandas


    【解决方案1】:

    我宁愿画出典型的方式,比如:

    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(),每个数据系列一次。

    附:你可以这样设置 xticks:Changing the "tick frequency" on x or y axis in matplotlib?

    【讨论】:

    • 问题是每个日期时间只匹配一个站数据项。数据集中的空值导致绘图被破坏。从上面的第 5 行代码开始,我已经向解决方案迈进了一步。 .
    • 那么您遇到的问题与帖子中指定的不同...请参阅此处以处理 NaN(不是数字 - 您所说的“null”是什么意思?):stackoverflow.com/questions/10939391/…
    【解决方案2】:

    很抱歉上面的评论我需要添加代码。还在学习 。 .

    从第 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 比例,因此无法在同一图表上绘制所有站点的图。我的数据中的 HUT4 的记录要少得多,并且仅绘制到大约 25% 的比例尺,即使日期时间值覆盖的范围与其他 HUT 或多或少相同。

    【讨论】:

      猜你喜欢
      • 2016-02-22
      • 2018-10-16
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      • 2011-09-30
      • 1970-01-01
      相关资源
      最近更新 更多