matplotlib subplot网格创建两个不同的画布而不是一个

时间:2014-02-24 02:25:03

标签: python matplotlib

我正在尝试按照这个例子制作一个子图的网格:

http://matplotlib.org/examples/pylab_examples/line_styles.html

但我的代码在两个不同的画布中绘制了两行图,而不是在一个画布中(图像是正确的)。有谁理解为什么?

这是我的代码的摘录:

alphas = [45, 75]
numalp = len(alphas)

angles = np.linspace(pi/12, pi/2, num=10)
numobs = len(angles)

axisNum = 0

for a in alphas:

          #[some operations]

          for obsangl in angles:

                       #[some operations]

                       axisNum += 1
                       axii = plt.subplot(numalp, numobs, axisNum)
                       plt.errorbar(g, Pgamma, yerr = ePgamma, color = 'green', fmt = '.')                
                       axii1 = axii.twinx()                
                       plt.plot(g, lightcurva, 'b-')
                       axii.set_yticklabels([])
                       axii.set_xticklabels([])                
                       axii1.set_yticklabels([])
                       axii1.set_xticklabels([])   

1 个答案:

答案 0 :(得分:0)

plt.figure()循环中是否有for a in alphas? (在你的#[some operations]中)如果是这样,那么每次你调用它都会得到一个新的数字,除非你指定一个数字。例如,以下将创建两个数字,每个数字都有一行:

for  a in alphas:
    fig=plt.figure()
    for obsangl in angles:
        # etc.

如果是这种情况,那么要纠正它,你可以在所有循环之前定义数字:

fig=plt.figure()
for a in alphas:
    for obsang1 in angles:
        # etc.

或者您可以指定图号:

for  a in alphas:
    fig=plt.figure(1)  # Specifies Figure 1
    for obsangl in angles:
        # etc.