有些时候我们需要用for循环来创建多个子图,来对比特征。现在已画出8组随机数来作为示例。
from matplotlib import pyplot as plt
import numpy as np
#设置画布大小
fig=plt.figure(figsize=(20,8))
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['SimHei']
for i in range(4):
#创建2组随机数
data1=np.random.randint(0,100,100)+20*i
data2=np.random.randint(100,200,100)+20*i
s1=f'ax_{2*i+1}'
#添加4行 2列的画布
s1 = fig.add_subplot(4,2,2*i+1)
s1.boxplot(data1,labels=['箱线图'])
plt.title(f'第{2*i+1}个箱线图')
#去掉横坐标标签
s1.set_xticklabels([])
s2 = f'ax_{2*i + 2}'
s2 = fig.add_subplot(4, 2, 2*i + 2)
s2.boxplot(data2,labels=['箱线图'])
plt.title(f'第{2*i+2}个箱线图',color='red')
#去掉横坐标标签
s2.set_xticklabels([])
plt.show()
出来的图像效果如下:
也可以将2个图放在一个子图进行对比。
from matplotlib import pyplot as plt
import numpy as np
fig=plt.figure(figsize=(10,8))
plt.rcParams['font.sans-serif'] = ['SimHei']
for i in range(2):
data1=np.random.randint(0,100,100)+20*i
data2=np.random.randint(100,200,100)+20*i
s1=f'ax_{i+1}'
s1 = fig.add_subplot(2,1,i+1)
s1.boxplot([data1,data2],labels=[f'箱线图{2*i}',f'箱线图{2*i+1}'])
plt.title(f'第{i+1}个图形')
plt.show()
图形如下: