matplotlib 如何向x轴添加另一个标注级别

w3nuxt5m  于 2023-05-23  发布在  其他
关注(0)|答案(1)|浏览(119)

我正试图在一个图上画一个副轴。第一个x轴显示该月的日期。我想在第二个轴的标签是月份的名称,并显示在下面。
我的第一把斧子是:

plot={}
plot['W']=axs[0]
plot['W'].xaxis.set_major_formatter(mdates.DateFormatter('%d'))
plot['W'].xaxis.set_minor_locator(mdates.HourLocator(interval=6))
plot['W'].xaxis.set_major_locator(mdates.DayLocator(interval=1))

最后,它应该看起来像that

ma8fv8wu

ma8fv8wu1#

IIUC,这里有一种方法(* 为您提供一般逻辑 *)将第二个/较低的x轴与twiny相加:

plot["X"] = axs[1]
plot["X"].plot(dates, vals, "g-")

plot["X"].xaxis.set_major_formatter(mdates.DateFormatter("%d"))
plot["X"].xaxis.set_minor_locator(mdates.HourLocator(interval=6))
plot["X"].xaxis.set_major_locator(mdates.DayLocator(interval=1))

ax2 = plot["X"].twiny()
ax2.xaxis.set_major_locator(mdates.MonthLocator())
ax2.xaxis.set_major_formatter(mdates.DateFormatter("%b %Y"))

plot["X"].set_xlim(dates[0], dates[-1])
ax2.set_xlim(dates[0]-pd.offsets.MonthBegin(1), dates[-1]+pd.offsets.MonthEnd(1))

ax2.xaxis.tick_bottom()
ax2.spines["bottom"].set_position(("outward", 30))

plt.show();

输出:

  • 使用的输入:*
np.random.seed(123456)

dates = pd.date_range("20230425", "20230505", freq="2H")
vals = np.random.randn(len(dates), 1)

相关问题