matplotlib:意外的gridspec行为

时间:2014-03-28 18:59:53

标签: python matplotlib plot

我尝试使用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()

1 个答案:

答案 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()删除轴

的重叠

Output plot