小提琴图基础

小提琴图类似于直方图和箱形图,因为它们显示了样本概率分布的抽象表示。小提琴图使用核密度估计(KDE)来计算样本的经验分布,而不是显示属于分类或顺序统计的数据点的计数。该计算由几个参数控制。此示例演示如何修改评估KDE的点数 (points) 以及如何修改KDE (bw_method) 的带宽。

有关小提琴图和KDE的更多信息,请参阅scikit-learn文档 有一个很棒的部分:http://scikit-learn.org/stable/modules/density.html

小提琴图基础示例

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. # Fixing random state for reproducibility
  4. np.random.seed(19680801)
  5. # fake data
  6. fs = 10 # fontsize
  7. pos = [1, 2, 4, 5, 7, 8]
  8. data = [np.random.normal(0, std, size=100) for std in pos]
  9. fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(6, 6))
  10. axes[0, 0].violinplot(data, pos, points=20, widths=0.3,
  11. showmeans=True, showextrema=True, showmedians=True)
  12. axes[0, 0].set_title('Custom violinplot 1', fontsize=fs)
  13. axes[0, 1].violinplot(data, pos, points=40, widths=0.5,
  14. showmeans=True, showextrema=True, showmedians=True,
  15. bw_method='silverman')
  16. axes[0, 1].set_title('Custom violinplot 2', fontsize=fs)
  17. axes[0, 2].violinplot(data, pos, points=60, widths=0.7, showmeans=True,
  18. showextrema=True, showmedians=True, bw_method=0.5)
  19. axes[0, 2].set_title('Custom violinplot 3', fontsize=fs)
  20. axes[1, 0].violinplot(data, pos, points=80, vert=False, widths=0.7,
  21. showmeans=True, showextrema=True, showmedians=True)
  22. axes[1, 0].set_title('Custom violinplot 4', fontsize=fs)
  23. axes[1, 1].violinplot(data, pos, points=100, vert=False, widths=0.9,
  24. showmeans=True, showextrema=True, showmedians=True,
  25. bw_method='silverman')
  26. axes[1, 1].set_title('Custom violinplot 5', fontsize=fs)
  27. axes[1, 2].violinplot(data, pos, points=200, vert=False, widths=1.1,
  28. showmeans=True, showextrema=True, showmedians=True,
  29. bw_method=0.5)
  30. axes[1, 2].set_title('Custom violinplot 6', fontsize=fs)
  31. for ax in axes.flatten():
  32. ax.set_yticklabels([])
  33. fig.suptitle("Violin Plotting Examples")
  34. fig.subplots_adjust(hspace=0.4)
  35. plt.show()

下载这个示例