matplotlib箱体线绘制
import numpy as np;
import matplotlib.pyplot as plt;
# import math;
fig = plt.figure(figsize=(6, 4))
ax = fig.add_subplot(111)
# 以列向量的形式存放每一个箱体
data1 = np.array([0.21, 0.13, 0.04, 0.1, 0.19, 0.11, 0]).T
data2 = np.array([0.45, 0.17, 0.29, 0.29, 0.2, 0.26, 0.03]).T
data3 = np.array([1.41, 1.96, 2.34, 1.31, 1.6, 1.96, 1.65]).T
data4 = np.array([2.28, 2.29, 2.48, 1.98, 2.12, 2.63, 2.27]).T
data = [data1, data2, data3, data4]
# 箱体线的一些参数设置
colors = ["#00008B", "#00BFFF", "#20B2AA", "#FFD700"]
labels = ["Fashion-MNIST", "Cifar-10", "Cifar-100", "Mini-Imagenet"]
whis = 1.6
width = 0.35
# 绘制箱体线
bp = ax.boxplot(data, whis=whis, widths=width, sym="o", labels=labels, patch_artist=True)
for patch, color in zip(bp["boxes"], colors): # 设置箱体线的颜色
patch.set_facecolor(color)
plt.ylabel("Accuracy Increment (%)", {'weight': 'normal', 'size': 12}) # 设置y坐标
# plt.title("生成器抗干扰能力的稳定性比较")
plt.grid(axis="y", ls=":", lw=1, color="gray", alpha=.4) # 设置网格线
plt.tick_params(labelsize=12) # 设置坐标字体大小
# labels = ax.get_xticklabels() + ax.get_yticklabels()
# [label.set_fontname('Times New Roman') for label in labels]
# 存放箱体线图 dpi为分辨率
plt.savefig('boxplot.jpeg', dpi=300)
plt.show()