绘制ax.twin图时如何在matplotlib中将x轴刻度设置为日期

时间:2018-08-08 08:30:08

标签: python matplotlib

我的数据是:

enter image description here

我可以使用以下代码绘制ax.twinx条和线图:

df = pd.DataFrame({'a': [350, 200, 150, 475],'b': [43, 3, 27, 10],'date':pd.date_range('2018-01-01',periods=4)},columns=['date','a','b'])
fig, ax1 = plt.subplots(figsize=(15, 10))
ax2=ax1.twinx()
df['b'].plot(kind='bar', color='y', ax=ax1)
df['a'].plot(kind='line', marker='d', ax=ax2)
ax2.yaxis.tick_right()
ax1.yaxis.tick_left()
ax1.legend(loc=0)
ax2.legend(loc=2)
plt.show()

,结果是这样的: enter image description here

但是我想将date变量放在现在[0,1,2,3]的x轴刻度中,所以我尝试了代码:

ax1.xaxis.set_ticks(df['date'])

,但显示错误如下: enter image description here

那我该如何以x个刻度显示日期?

1 个答案:

答案 0 :(得分:0)

ax1.xaxis.set_ticks(df['date'])替换为:

ax1.set_xticklabels(df['date'])

要使用其他日期格式,可以使用以下行更改日期列:

df['date'] = df['date'].dt.strftime('%d/%m/%Y')