条形图 Matplotlib:twinx 的日期间隔(x 轴)问题
Bar plot Matplotlib : Date interval (xaxis) issue with twinx
我不明白为什么我的这段代码不起作用。我想要一个间隔为 1 的 x 轴。
df['Dates'] = pd.to_datetime(df.Dates)
fig, ax = plt.subplots(figsize=(16, 9))
ax.bar(df['Dates'],
df['Score'],
color='blue',
width=2)
date_form = DateFormatter("%d/%m/%Y")
ax.xaxis.set_major_formatter(date_form)
ax.xaxis.set_major_locator(mdates.DayLocator(interval=1))
ax2=ax.twinx()
ax2.plot(df['Dates'],
df['Price'],
color = 'black')
plt.show()
目前,ax
的日期格式刚刚被 ax2.plot
覆盖,因此您应该将日期格式应用到 ax2
而不是 ax
。另外 autofmt_xdate
对于旋转日期标签很有用:
df['Dates'] = pd.to_datetime(df['Dates'])
fig, ax = plt.subplots(figsize=(16, 9))
ax.bar(df['Dates'], df['Score'], color='blue', width=1)
ax2 = ax.twinx()
ax2.plot(df['Dates'], df['Price'], color='black')
# apply the date formatting to ax2 instead of ax
date_form = DateFormatter('%d/%m/%Y')
ax2.xaxis.set_major_formatter(date_form)
ax2.xaxis.set_major_locator(mdates.DayLocator(interval=1))
# rotate the date labels
fig.autofmt_xdate(ha='center', rotation=90)
这是一些随机数据的输出(以后建议将数据粘贴为文本,这样我们就可以直接复制真实数据):
我不明白为什么我的这段代码不起作用。我想要一个间隔为 1 的 x 轴。
df['Dates'] = pd.to_datetime(df.Dates)
fig, ax = plt.subplots(figsize=(16, 9))
ax.bar(df['Dates'],
df['Score'],
color='blue',
width=2)
date_form = DateFormatter("%d/%m/%Y")
ax.xaxis.set_major_formatter(date_form)
ax.xaxis.set_major_locator(mdates.DayLocator(interval=1))
ax2=ax.twinx()
ax2.plot(df['Dates'],
df['Price'],
color = 'black')
plt.show()
目前,ax
的日期格式刚刚被 ax2.plot
覆盖,因此您应该将日期格式应用到 ax2
而不是 ax
。另外 autofmt_xdate
对于旋转日期标签很有用:
df['Dates'] = pd.to_datetime(df['Dates'])
fig, ax = plt.subplots(figsize=(16, 9))
ax.bar(df['Dates'], df['Score'], color='blue', width=1)
ax2 = ax.twinx()
ax2.plot(df['Dates'], df['Price'], color='black')
# apply the date formatting to ax2 instead of ax
date_form = DateFormatter('%d/%m/%Y')
ax2.xaxis.set_major_formatter(date_form)
ax2.xaxis.set_major_locator(mdates.DayLocator(interval=1))
# rotate the date labels
fig.autofmt_xdate(ha='center', rotation=90)
这是一些随机数据的输出(以后建议将数据粘贴为文本,这样我们就可以直接复制真实数据):