我尝试使用gridspec在一个图中垂直绘制两个图。上部应该是下部的两倍(即比率是2:1,其中3个相等的垂直部分)并且它们必须共享x轴刻度。我有以下最小的例子,它产生正确的3部分图,但它不会跨越上部子图的两倍高。第一个图是在前三分之一,第二个是在底部的第三个,中间是空的,哪个是错误?
import matplotlib.gridspec as gridspec
x = y = [1,2,3]
gs = gridspec.GridSpec(3, 1)
ax1 = plt.subplot(gs[0:1, 0])
ax1.plot(x, y)
ax2 = plt.subplot(gs[2, 0], sharex=ax1)
ax2.plot(x,y)
plt.show()
答案 0 :(得分:1)
使用gridspec
时,索引的行为与numpy arrays类似。因此,您需要gs[0:2, 0]
来获取所需的输出。
import matplotlib.pyplot as plt
from matplotlib import gridspec
x = y = [1,2,3]
gs = gridspec.GridSpec(3, 1)
ax1 = plt.subplot(gs[0:2, 0])
ax1.plot(x, y)
ax2 = plt.subplot(gs[2, 0], sharex=ax1)
ax2.plot(x,y)
plt.show()
请注意,您可以使用plt.tight_layout()
删除轴