matplotlib:意外的gridspec行为
我想在一个图形中垂直绘制两个图表,使用 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 个回答
2
在使用 gridspec
的时候,索引的方式和 numpy 数组 有点像。因此,你需要用 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()
来消除坐标轴之间的重叠。