matplotlib 使用日期时间索引时不显示多个图

41ik7eoe  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(94)

我想创建一个具有一个折线图和一个条形图的图形。这段代码没有显示我正在创建的两个图(只显示了其中一个):

df = pd.DataFrame({
 'abnormal' : [90,40,30,30,30,25,25,20,15,10],
 'fix' : [60,70,65,70,70,60,50,45,45,45],
 'normal' : [140,160,170,180,190,200,210,220,230,240],
 'bad_rate' : [210,100,100,70,70,75,70,60,65,60]})
df.set_index(pd.to_datetime(pd.date_range('2010-01-01', periods=10, freq='Y')), inplace=True)

df['abnormal'].plot(kind='bar')
df['bad_rate'].plot(secondary_y=True)

plt.show()

但是,如果不使用日期时间索引,它会正确显示:

df = pd.DataFrame({
 'abnormal' : [90,40,30,30,30,25,25,20,15,10],
 'fix' : [60,70,65,70,70,60,50,45,45,45],
 'normal' : [140,160,170,180,190,200,210,220,230,240],
 'bad_rate' : [210,100,100,70,70,75,70,60,65,60]})
#df.set_index(pd.to_datetime(pd.date_range('2010-01-01', periods=10, freq='Y')), inplace=True)

df['abnormal'].plot(kind='bar')
df['bad_rate'].plot(secondary_y=True)

plt.show()

我看不出这里有什么问题。

krugob8w

krugob8w1#

一种选择是使用年份作为x值,并直接从matplotlib绘制:

fig, ax = plt.subplots()
ax.bar(df.index.year, df['abnormal'], color='b')
sec_ax = ax.twinx()
sec_ax.plot(df.index.year, df['bad_rate'])

输出:

相关问题