gpt4 book ai didi

python - 在 matplotlib 中绘制时间增量

转载 作者:行者123 更新时间:2023-12-01 01:59:13 24 4
gpt4 key购买 nike

我正在阅读某年的时间(持续时间)数据,我想在 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 时间增量吗?

最佳答案

使用 pd.to_datetime 将 timedetlas 转换为 datetime。它会给所有内容一个 1970 年的日期,但如果您只想绘制和显示,那么这并不重要。然后,您还需要删除 .dt.total_seconds()

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()

Plot Result

关于python - 在 matplotlib 中绘制时间增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49848933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com