我正在阅读某年的时间(持续时间)数据,我想在 x 轴上绘制年份图表,在 y 轴上绘制时间(持续时间)图表。我希望 y 轴具有 HH:MM:SS 格式。我不知道该怎么做。这是我的代码(数据是合成的,真实数据集要大得多)。
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, date2num
df = pd.DataFrame({'Year':[2010, 2011, 2012],
'Time': ['2:19:15', '2:11:16', '2:20:17']})
df['Time'] = pd.to_timedelta(df['Time'])
fig, ax = plt.subplots()
myFmt = DateFormatter("%H:%M:%S")
ax.yaxis.set_major_formatter(myFmt)
ax.plot(df['Year'], df['Time'].dt.total_seconds())
plt.gcf().autofmt_xdate()
plt.show()
如果我不转换为total_seconds,则会收到错误。总秒值似乎被解释为天数。我尝试将 Total_Seconds 除以 24*60*60,但这给了我一条关于 0 日期的消息。我也无法说服 date2num 为我工作。
我检查过以前的类似问题,但代码不再有效。
有谁知道如何在 matplotlib 中绘制 Pandas 时间增量?
将 timedelas 转换为datetime
with pd.to_datetime
。它会给所有内容一个 1970 年的日期,但如果您只想绘制和显示,那么这并不重要。然后你需要摆脱.dt.total_seconds()
too.
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, date2num
df = pd.DataFrame({'Year':[2010, 2011, 2012],
'Time': ['2:19:15', '2:11:16', '2:20:17']})
df['Time'] = pd.to_timedelta(df['Time'])
df['Time'] = pd.to_datetime(df['Time'])
fig, ax = plt.subplots()
myFmt = DateFormatter("%H:%M:%S")
ax.yaxis.set_major_formatter(myFmt)
ax.plot(df['Year'], df['Time'])
plt.gcf().autofmt_xdate()
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)