我尝试使用gridspec在一个图中垂直绘制两个图。较高的那一个应该是较低的那一个的两倍(即,比例为2:1,垂直部分相等为3),并且它们必须共享x轴刻度。我有以下最小示例,该示例可以生成正确的三部分图,但它不会跨越上部子图,其高度是下部子图的两倍。第一个情节在顶部三分之一处,第二个情节在底部三分之一处,中间为空错误在哪里?

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()

最佳答案

使用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()删除轴的重叠

关于python - matplotlib:意外的gridspec行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22721060/

10-11 17:48