点参数对matplotlib中的小提琴图有什么作用

时间:2019-06-24 14:12:43

标签: python python-3.x matplotlib

更改matplotlib的{​​{1}}中的points参数会什么时候发生?

小提琴图的

violinplot参数定义如下。

  

points:标量,默认= 100

     

定义评估每个高斯核密度估计值的点数。

points

更改图表后,我看到的图表变化很小。为什么会这样呢?

1 个答案:

答案 0 :(得分:1)

根据[官方文档](第二重重点)(https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.axes.Axes.violinplot.html

  

:标量,默认= 100   定义评估每个高斯核密度估计值的点数。

因此,如下面的示例(改编自here所示)所示,当选择很少的点数时,将突出显示点数的影响。当然,结果 还取决于样本量。尝试选择较小的样本大小,例如size=5,然后在下面运行相同的代码。随着点数的增加,密度估算的平滑度自然会提高。在一些截止点上,这需要进行收敛性测试,您不会看到任何明显的影响。

import numpy as np
import matplotlib.pyplot as plt

# Fixing random state for reproducibility
np.random.seed(19680801)


fs = 10  # fontsize
pos = [1, 2, 4, 5, 7, 8]
data = [np.random.normal(0, std, size=100) for std in pos]

fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(10, 3))

axes[0].violinplot(data, pos, points=2, widths=1,
                      showmeans=True, showextrema=True, showmedians=True)
axes[0].set_title('Custom violinplot 1', fontsize=fs)

axes[1].violinplot(data, pos, points=5, widths=1,
                      showmeans=True, showextrema=True, showmedians=True,
                      bw_method='silverman')
axes[1].set_title('Custom violinplot 2', fontsize=fs)

axes[2].violinplot(data, pos, points=100, widths=1,
                      showmeans=True, showextrema=True, showmedians=True,
                      bw_method='silverman')
axes[2].set_title('Custom violinplot 2', fontsize=fs)

for ax in axes.flat:
    ax.set_yticklabels([])

plt.tight_layout()

enter image description here

P.S:要进一步强调这一点,请考虑一个位置和三种情况:@ImportanceOfBeingEarnest建议的5、10和50点

pos = [1]
data = [np.random.normal(0, std, size=100) for std in pos]

enter image description here