将刻度和标签移动到 pyplot 图的顶部
Move ticks and labels to the top of a pyplot figure
根据 this question,移动 AxesSubplot
对象的 xticks 和标签可以用 ax.xaxis.tick_top()
完成。但是,我无法让它在一个图形中使用多个轴。
本质上,我想将 xticks 移动到图的最顶部(仅在第一行的子图的顶部显示)。
这是我正在尝试做的一个愚蠢的例子:
fig, axs = plt.subplots(nrows=2, ncols=2, sharex=True, sharey=True)
fig.set_figheight(5)
fig.set_figwidth(10)
for ax in axs.flatten():
ax.xaxis.tick_top()
plt.show()
显示
我想要的结果是同一张图,但 xticks
和 xticklabels
位于第一行两个图的顶部。
感谢@BigBen 的 sharex
评论。这确实是阻止 tick_top
工作的原因。
要获得结果,您可以将 tick_top
用于顶部的两个图,并使用 tick_params
用于底部的两个图:
fig, axs = plt.subplots(2, 2, sharex=False) # Do not share xaxis
for ax in axs.flatten()[0:2]:
ax.xaxis.tick_top()
for ax in axs.flatten()[2:]:
ax.tick_params(axis='x',which='both',labelbottom=False)
查看实时实现 here。
根据 this question,移动 AxesSubplot
对象的 xticks 和标签可以用 ax.xaxis.tick_top()
完成。但是,我无法让它在一个图形中使用多个轴。
本质上,我想将 xticks 移动到图的最顶部(仅在第一行的子图的顶部显示)。
这是我正在尝试做的一个愚蠢的例子:
fig, axs = plt.subplots(nrows=2, ncols=2, sharex=True, sharey=True)
fig.set_figheight(5)
fig.set_figwidth(10)
for ax in axs.flatten():
ax.xaxis.tick_top()
plt.show()
显示
我想要的结果是同一张图,但 xticks
和 xticklabels
位于第一行两个图的顶部。
感谢@BigBen 的 sharex
评论。这确实是阻止 tick_top
工作的原因。
要获得结果,您可以将 tick_top
用于顶部的两个图,并使用 tick_params
用于底部的两个图:
fig, axs = plt.subplots(2, 2, sharex=False) # Do not share xaxis
for ax in axs.flatten()[0:2]:
ax.xaxis.tick_top()
for ax in axs.flatten()[2:]:
ax.tick_params(axis='x',which='both',labelbottom=False)
查看实时实现 here。