【问题标题】:Graphing Time series in python using consistent hourly markings使用一致的小时标记在 python 中绘制时间序列
【发布时间】:2020-05-11 15:38:30
【问题描述】:

所以我的数据看起来可以在下面的链接中找到。我正在尝试用每小时标记绘制时间序列。基本上在小时的顶部绘制主要标记,例如 20:00,21:00,22:00,23:00 和半小时的次要标记,例如 20:30,21:30,22:30,23 :30。

https://drive.google.com/open?id=1g2UhLBhddWSxuH6bnFT3kMO90ZDEQT5F6fF_GTNPk_w

日期列日期转换为日期时间,而时间列保持不变。

我的数据在 CSV 文件中,我目前将其读入数据框并使用以下命令绘制它们。

df.plot(kind='line', x= "Time_split",y= "Total_S4_Sig1")
plt.gcf().autofmt_xdate()
plt.show()

这并不能完全实现我想要做的事情。

提前感谢您的宝贵时间。我真的很感谢你的帮助。

尊敬的, 钦坦塔克拉尔

【问题讨论】:

  • 您能否展示您的情节并进一步描述您想要实现的目标?到目前为止我不明白你的目标

标签: python pandas dataframe matplotlib


【解决方案1】:

您可以将您的DateTime_split 合并到一个时间戳列中,并与HourLocatorMinuteLocator 一起绘制:

from matplotlib import dates as mdates

df['time'] = pd.to_datetime(df['Date']) + pd.to_timedelta(df['Time_split'])

ax=df.plot(x='time', y='Total_S4_Sig1')
ax.xaxis.set_major_locator(mdates.HourLocator())
ax.xaxis.set_minor_locator(mdates.MinuteLocator(30))

【讨论】:

  • 能否解释一下 mdates 是什么?
  • 什么是我的“Time_split”变量是时间日期时间,每当我尝试将其转换为增量时间时,它都会给我一个错误。您是否有使用“Time_split”的日期时间的替代方法,我们甚至可以使用 datetime.dt.time。
  • 请指教。我将衷心感谢您的帮助。我已经花了好几个小时试图修复它。
  • 您的示例数据显示Time_split 只是字符串01:00:00,为什么不将其解析为timedelta 而不是datetime
  • 天啊@Quang Hoang。数据是时间日期时间的,因为我在绘图之前做了一些预处理。我评论了进行日期时间转换的代码,只是为了尝试您的绘图方法。我收到一个错误。 ValueError:只允许前导负号。我看不出 deltatime 怎么可能是负数。请指教。再次感谢您的回复。这件事真的把我搞砸了好几个小时,我非常沮丧。
猜你喜欢
  • 2018-09-20
  • 1970-01-01
  • 2017-10-08
  • 2018-08-24
  • 2021-03-22
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
相关资源
最近更新 更多