我试图创建一个类似于this question的图。
为什么我只得到两个面板,即只有gs2:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
def main():
fig = plt.figure()
gs1 = gridspec.GridSpec(1,4)
gs2 = gridspec.GridSpec(2,4)
for n in range(4):
ax00 = plt.subplot(gs1[0,n])
ax10 = plt.subplot(gs2[0,n])
ax11 = plt.subplot(gs2[1,n])
ax00.plot([0,0],[0,1*n],color='r')
ax10.plot([0,1],[0,2*n],color='b')
ax11.plot([0,1],[0,3*n],color='g')
plt.show()
main()
这给了我这个:
最后,我希望有一个像这样的数字:
这是我使用问题末尾的代码获得的。然而,我想让gs2.update(hspace=0)
给出的图具有可移动性(这是我尝试使用gridspec的原因)。即,我想删除最后一行和第二行之间的空格。
def whatIwant():
f, axarr = plt.subplots(3,4)
for i in range(4):
axarr[0][i].plot([0,0],[0,1*i],color='r')
axarr[1][i].plot([0,1],[0,2*i],color='b') #remove the space between those and be able to move the plots where I want
axarr[2][i].plot([0,1],[0,3*i],color='g')
plt.show()
1条答案
按热度按时间chhkpiq41#
这确实是使用
GridSpecFromSubplotSpec
有意义的情况之一。(和1到2的高度比)。在第一行中,您将放置一个具有一行和4列的GridSpecFromSubplotSpec
。在第二行中,您将放置一个具有两行和4列的GridSpecFromSubplotSpec
。另外指定hspace=0.0
,使得两个底部行之间没有任何间隔。与链接问题的答案中的解决方案相比,此解决方案的优点在于,您不会重叠GridSpecs,因此不需要考虑它们如何相互关联。
如果您仍然对问题中的代码不起作用的原因感兴趣:
您将需要使用两个不同的GridSpecs,每个GridSpecs都有行的总数(在本例中为3);但是只填充第一个GridSpec的第一行和第二个GridSpec的后两行: