我想创建一个在特定索引参考处绘制一条垂直线的条形图。莫名其妙地,当我尝试绘制带有日期时间索引的数据框时,垂直线永远不会出现。但是,“ int”索引没有问题。
将各个日期时间索引值从“时间戳”更改为日期时间没有帮助。
此代码有效:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randint(0,50,size=(50, 4)), columns=list('ABCD'))
ax = df.plot(xticks=df.index, kind="bar", stacked=True)
ax.axvline(x=df.index[40], linewidth = 10, color='k', linestyle='--')
plt.show()
此代码不起作用:
import pandas as pd
import matplotlib.pyplot as plt
numdays = 50
base = datetime.datetime.today()
date_list = [base - datetime.timedelta(days=x) for x in range(numdays)][::-1]
df = pd.DataFrame(np.random.randint(0,50,size=(50, 4)), columns=list('ABCD'), index=date_list)
ax = df.plot(xticks=df.index, kind="bar", stacked=True)
ax.axvline(x=df.index[40], linewidth = 10, color='k', linestyle='--')
plt.show()
我会认为设置ax.axvline(x = df.index [40],...)在两种情况下的行为都相同,因为df.index列表的第40个元素也是第40个x值在情节中。但是我不能让它为日期时间索引工作。我真的很想避免将整个数据框索引从datetime更改为int,但是如果那是唯一的解决方案,那就去吧。
谢谢。
编辑:为第二个代码段的数据帧设置日期时间索引。