本文代码源自官方实例,部分进行了修改和注解,帮助学习和查询。
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() 运行结果: