python gridspec,分享x和y轴的麻烦

时间:2014-09-10 15:40:56

标签: python matplotlib

我正在使用gridspec进行多面板绘图,但我遇到了一些问题。我希望每一行共享一个不同的y轴,每列共享一个不同的x轴。或者,换句话说,每行共享x并按列共享y。我还想为这些轴中的每一个添加标签。这是我所谈论的一个例子以及制作它的代码(减去我想要的轴标签): sample axis sharing http://matplotlib.org/_images/subplots_demo_04.png

# row and column sharing
f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharex='col', sharey='row')
ax1.plot(x, y)
ax1.set_title('Sharing x per column, y per row')
ax2.scatter(x, y)
ax3.scatter(x, 2 * y ** 2 - 1, color='r')
ax4.plot(x, 2 * y ** 2 - 1, color='r')

但是我无法正确使用此实现,因为我正在使用subplot2grid,因为我需要选择每个绘图的特定位置和尺寸。我尝试在subplot2grid调用中使用sharex = ax1和sharey = ax1这样的东西无济于事。这是我的代码的相关部分:

ax1 = plt.subplot2grid((8,8), (2,0), colspan=2, rowspan=2)
ax2 = plt.subplot2grid((8,8), (4,0), colspan=2, rowspan=2)
ax3 = plt.subplot2grid((8,8), (6,0), colspan=2, rowspan=2)
ax4 = plt.subplot2grid((8,8), (2,2), colspan=2, rowspan=2)
ax5 = plt.subplot2grid((8,8), (4,2), colspan=2, rowspan=2)
ax6 = plt.subplot2grid((8,8), (2,4), colspan=2, rowspan=2)
ax7 = plt.subplot2grid((8,8), (1,0), colspan=2, rowspan=1)
ax8 = plt.subplot2grid((8,8), (1,2), colspan=2, rowspan=1)
ax9 = plt.subplot2grid((8,8), (1,4), colspan=2, rowspan=1)
ax10 = plt.subplot2grid((8,8), (2,6), colspan=1, rowspan=2)

1 个答案:

答案 0 :(得分:0)

与普通子图相比,使用sharex/sharey=axsubplot2gridGridSpec的子图不仅会共享范围,还会分享刻度。

要为每个子图分别配置刻度,您需要plt.setp(ax.get_xticklabels(), visible=False),有关详细信息,请参阅GridSpec with shared axes in Python