注意
转到末尾 以下载完整的示例代码。
箱线图与小提琴图比较#
请注意,虽然小提琴图与 Tukey(1977)的箱线图密切相关,但它们添加了有用的信息,例如样本数据的分布(密度轨迹)。
默认情况下,箱线图显示在四分位数间距的 1.5 倍之外的数据点,作为高于或低于须线的异常值,而小提琴图则显示数据的整个范围。
有关箱线图及其历史的良好一般参考资料,请访问:http://vita.had.co.nz/papers/boxplots.pdf
小提琴图需要 matplotlib >= 1.4。
有关小提琴图的更多信息,scikit-learn 文档有一个很棒的部分:https://scikit-learn.cn/stable/modules/density.html
import matplotlib.pyplot as plt
import numpy as np
fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(9, 4))
# Fixing random state for reproducibility
np.random.seed(19680801)
# generate some random test data
all_data = [np.random.normal(0, std, 100) for std in range(6, 10)]
# plot violin plot
axs[0].violinplot(all_data,
showmeans=False,
showmedians=True)
axs[0].set_title('Violin plot')
# plot box plot
axs[1].boxplot(all_data)
axs[1].set_title('Box plot')
# adding horizontal grid lines
for ax in axs:
ax.yaxis.grid(True)
ax.set_xticks([y + 1 for y in range(len(all_data))],
labels=['x1', 'x2', 'x3', 'x4'])
ax.set_xlabel('Four separate samples')
ax.set_ylabel('Observed values')
plt.show()
参考资料
本示例展示了以下函数、方法、类和模块的使用情况