我正在尝试按照这个例子制作一个子图的网格:
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([])
答案 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.