本文代码源自官方实例,部分进行了修改和注解,帮助学习和查询。
import numpy as np
import matplotlib.pyplot as plt
#随机生成一组数据73行,4列,正态分布,期望为1.5,标准差1.75
data = np.random.lognormal(size=(37,4), mean=1.5, sigma=1.75)
labels = list('ABCD') # 设置数据标签
fs = 10 # fontsize字体大小
# 建立一张有多个子图组成的图表,2行,3列,
fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(6,6), sharey=True)
#不同显示风格的设置
axes[0,0].boxplot(data, labels=labels)
axes[0,0].set_title('Default', fontsize=fs)
axes[0,1].boxplot(data, labels=labels, showmeans=True)
axes[0,1].set_title('showmeans=True', fontsize=fs)
axes[0,2].boxplot(data, labels=labels, showmeans=True, meanline=True)
axes[0,2].set_title('showmeans=True,\nmeanline=True', fontsize=fs)
# 不显示box,showcaps显示末端的横线
axes[1,0].boxplot(data, labels=labels, showbox=False, showcaps=False)
tufte_title = 'TufteStyle \n(showbox=False,\nshowcaps=False)'
axes[1,0].set_title(tufte_title, fontsize=fs)
# notch显示凹形box,bootstrap是notch的设置参数
axes[1,1].boxplot(data, labels=labels, notch=True, bootstrap=10000)
axes[1,1].set_title('notch=True,\nbootstrap=10000', fontsize=fs)
# showfliers显示异常值
axes[1,2].boxplot(data, labels=labels, showfliers=False)
axes[1,2].set_title('showfliers=False', fontsize=fs)
#y轴显示对数坐标,标签为空
for ax inaxes.flatten():
ax.set_yscale('log')
ax.set_yticklabels([])
#设置图像上部的间隔
fig.subplots_adjust(hspace=0.5)
plt.show()
运行结果: