我正在尝试创建一个包含9个子图的图,并使用for循环创建标题,以避免必须指定标题9次。但是,我的代码适用于前8个子图,但不适用于最后一个图。请帮忙。
from scipy.stats import beta
import matplotlib.pyplot as plt
import numpy as np
a=[1,10,20,30,40,50,60,70,80,90]
b=[1,10,20,30,40,50,60,70,80,90]
x = np.linspace(0.001,0.999, num=100)
for i in range(9):
plt.title('alpha=' + str(a[i])+' beta= ' + str(b[i]))
plt.subplot(3, 3, i+1)
plt.plot(x, beta.pdf(x, a[i], b[i]),'r-', lw=3, alpha=0.6, label='beta pdf')
plt.xticks(np.arange(0, 1.5, 0.5))
plt.yticks(np.arange(0, 13, 6.0))
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=0.4)
plt.show()
答案 0 :(得分:0)
只需更改顺序,即plt.title()
之后的plt.subplot()
。您得到的标题比预期少,因为您的代码在标题可以绘制之前就已经绘制了标题。
此外,您可以通过plt.figure(figsize=(12,12))
更改图的大小,以使子图不会重叠。
修改后的代码:
from scipy.stats import beta
import matplotlib.pyplot as plt
import numpy as np
a=[1,10,20,30,40,50,60,70,80,90]
b=[1,10,20,30,40,50,60,70,80,90]
x = np.linspace(0.001,0.999, num=100)
plt.figure(figsize=(12,12)) # change the size of figure!
for i in range(9):
plt.subplot(3, 3, i+1)
plt.plot(x, beta.pdf(x, a[i], b[i]),'r-', lw=3, alpha=0.6, label='beta pdf')
plt.xticks(np.arange(0, 1.5, 0.5))
plt.yticks(np.arange(0, 13, 6.0))
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=0.4)
plt.title('alpha=' + str(a[i])+' beta= ' + str(b[i])) # Plot title here!!!
plt.show()