需要在子图之间添加间距以便于X轴标签显示,可能需要移除轴刻度的标签。

53

想要在绘制的图形之间添加垂直空间,以便显示X轴标签:

每个图形都需要有空间来显示日期,目前只有最后两个图形显示了日期,因为其他图形覆盖了它。

同时,我也想知道是否可以删除那些被标记为星期四/星期五上面的图形的X轴刻度线,即底部的X轴是唯一显示的。Y轴也是如此,但仅显示左侧的图形尺度。

*很遗憾,由于我的声望不够高,无法发布图片来展示这个问题。

代码片段:

import mathlib.pyplot as pyplot
fig = pyplot.figure()
ax1 = fig.add_subplot(4,2,1)
ax1.set_yscale('log')
ax2 = fig.add_subplot(4,2,2, sharex=ax1, sharey=ax1)
ax3 = fig.add_subplot(4,2,3, sharex=ax2, sharey=ax2)
ax4 = fig.add_subplot(4,2,4, sharex=ax3, sharey=ax3)
ax5 = fig.add_subplot(4,2,5, sharex=ax4, sharey=ax4)
ax6 = fig.add_subplot(4,2,6, sharex=ax5, sharey=ax5)
ax7 = fig.add_subplot(4,2,7, sharex=ax6, sharey=ax6)
ax1.plot(no_dict["Saturday"],'k.-',label='Saturday')
ax1.set_xlabel('Saturday')
ax1.axis([0,24,0,10000])
pyplot.suptitle('Title')
pyplot.xlabel('Hour in 24 Hour Format')
ax2.plot(no_dict["Sunday"],'b.-',label='Sunday')
ax2.set_xlabel('Sunday')
...

太拥挤了


请尽可能发布可运行的代码。这样只需要一个人(您)清理代码,而不是让每个试图回答的人都这样做,这可以节省时间。具体来说,要包括“import mathlib”和一些示例数据,而不是链接到不存在的字典。 - Paul
噢,好的观点。发帖时我正在吃午饭,否则在您回答之前我本应该让它真正可运行。 - Chris Lefevre
2个回答

111

使用 subplots_adjust。对于你的情况,这看起来很好:

fig.subplots_adjust(hspace=.5)

要去除刻度标签,请执行以下操作:

ax1.set_xticklabels([])

对于yticklabels也是类似的。但是,您不能将具有刻度标签的图表与共享x轴。

enter image description here


请注意,图形窗口有一个工具栏,其中有一个按钮可以交互式地调整这些设置(如hspace)。 - Evgeni Sergeev
如何仅在两行之间添加空格? - droid192

1
要针对特定子图更改间距,而不是全部子图,您可以使用以下方法调整该子图的轴位置:
bbox=plt.gca().get_position()
offset=-.03
plt.gca().set_position([bbox.x0, bbox.y0 + offset, bbox.x1-bbox.x0, bbox.y1 - bbox.y0])

如果offset < 0,则子图向下移动。如果offset > 0,则子图向上移动。
请注意,如果偏移量太大,导致子图的新位置与另一个子图重叠,则子图将消失。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接