【发布时间】:2021-06-11 15:38:28
【问题描述】:
我有一个包含时间和情绪的数据框。时间变量为 YYYY-MM-DD HH:MM:SS。
我想用 5 分钟条绘制情绪的堆叠直方图。
下面的代码可以工作,但是 x 轴太忙了。我想在 x 轴上只显示 30 分钟的间隔,并且仍然有每 5 分钟的条形图。
你能帮我实现这个吗?
import matplotlib.pyplot as plt
df['time'] = pd.to_datetime(df['time'])
df.groupby([df.time.dt.floor('5Min'),'Sentiment']).size().unstack().plot(kind='bar',stacked=True)
plt.show()
编辑#1
我认为以下代码方向正确,但 mdates.Dateformatter 似乎没有返回正确的日期。数据样本链接:https://pastebin.pl/view/52b65e7b
df = pd.read_csv("testfile.csv", nrows=999)
df['time'] = pd.to_datetime(df['time'], format='%Y-%m-%d %H:%M:%S%z')
df['time'] = pd.to_datetime(df['time'], utc=True)
df['time'] = df['time'].dt.tz_convert('US/Eastern')
df.groupby([df.time.dt.floor('5Min'),'Sentiment']).size().unstack().plot(kind='bar',stacked=True)
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M:%S'))
plt.gca().xaxis.set_major_locator(mdates.MinuteLocator(interval=30))
plt.gcf().autofmt_xdate()
plt.show()
编辑#2
在我的数据框中,我有另一个名为“close”的列,我想在同一轴上显示为一条线。如何在此图上为 df['close'] 叠加一条线?
【问题讨论】:
-
旁注:
pd.to_datetime(df['time'], utc=True)应该可以,你不需要之前的行。 -
注意 - 感谢您的注意
标签: python dataframe datetime matplotlib