Matplotlib gridspec - 将另一个立方图放在几个子图旁边

时间:2016-11-27 15:02:34

标签: python matplotlib subplot

我正试图找出如何在三个子图的右侧放置另一个立方体形图

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
gs1 = gridspec.GridSpec(3,2)
ax1 = plt.subplot(gs1[0, :])
ax2 = plt.subplot(gs1[1, :],sharex=ax1)
ax3 = plt.subplot(gs1[2, :],sharex=ax1)
plt.setp(ax1.get_xticklabels(), visible=False)
plt.setp(ax2.get_xticklabels(), visible=False)
plt.show()

enter image description here 如何使用gridspec放置另一个横跨这三行的图?

1 个答案:

答案 0 :(得分:2)

您已经通过将其细分为两列来为gridspec定义了正确的拆分。指定左轴使用第一列(请参阅下面的更改),应该是“立方”的轴(纵横比1)使用gridspec的右列。

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
gs1 = gridspec.GridSpec(3,2)
ax1 = plt.subplot(gs1[0, 0])
ax2 = plt.subplot(gs1[1, 0],sharex=ax1)
ax3 = plt.subplot(gs1[2, 0],sharex=ax1)
ax4 = plt.subplot(gs1[:, 1]) # NEW
ax4.set_aspect('equal', adjustable='box')  # NEW
plt.setp(ax1.get_xticklabels(), visible=False)
plt.setp(ax2.get_xticklabels(), visible=False)
plt.show()

gridspec with two columns

或者,您可以定义第二个gridspec并更新每个gridspec的(相对)位置,如下所示:

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
gs1 = gridspec.GridSpec(3,2)
gs1.update(left=0.05, right=0.48, wspace=0.05)
ax1 = plt.subplot(gs1[0, :])
ax2 = plt.subplot(gs1[1, :],sharex=ax1)
ax3 = plt.subplot(gs1[2, :],sharex=ax1)

gs2 = gridspec.GridSpec(1, 1)
gs2.update(left=0.55, right=0.98, hspace=0.05)
ax4 = plt.subplot(gs2[0,0])
#ax4.set_aspect('equal', adjustable='box') 
plt.setp(ax1.get_xticklabels(), visible=False)
plt.setp(ax2.get_xticklabels(), visible=False)
plt.show()

我对代码进行了评论,以便在ax4中获得相等的宽高比,以突出显示默认情况下它会填满整个可用空间。

alternative gridspec