gpt4 book ai didi

python - 如何阻止 fiddle 图切断异常值或极值

转载 作者:行者123 更新时间:2023-12-04 12:12:02 26 4
gpt4 key购买 nike

我在左边有一个 seaborn fiddle 图,在右边有一个 matplotlib。

如您所见,matplotlib 删除了一些值/数据,即使 showextrema=True 或 False 也没有效果。如何让 matplotlib 使用 fiddle 图来保留这些值?

import matplotlib.pyplot as plt
import seaborn as sns

a = [195.0, 245.0, 142.0, 237.0, 153.0, 238.0, 168.0, 145.0, 229.0, 138.0, 176.0, 116.0, 252.0, 148.0, 199.0, 162.0, 134.0, 163.0, 130.0, 339.0, 152.0, 208.0, 152.0, 192.0, 163.0, 249.0, 113.0, 176.0, 123.0, 189.0, 150.0, 207.0, 184.0, 153.0, 228.0, 153.0, 170.0, 118.0, 302.0, 197.0, 211.0, 159.0, 228.0, 147.0, 166.0, 156.0, 167.0, 147.0, 126.0, 155.0, 138.0, 159.0, 139.0, 111.0, 133.0, 134.0, 131.0, 156.0, 240.0, 207.0, 150.0, 207.0, 265.0, 151.0, 173.0, 157.0, 261.0, 186.0, 195.0, 158.0, 272.0, 134.0, 221.0, 131.0, 252.0, 148.0, 178.0, 206.0, 146.0, 217.0, 159.0, 190.0, 156.0, 172.0, 159.0, 141.0, 167.0, 168.0, 218.0, 191.0, 207.0, 164.0]

fig, axes = plt.subplots()

# Seaborn violin plot
sns.violinplot(data=a, width=0.6, color="w" )

# Matplotlib violin plot
axes.violinplot(a, showmeans=True, showmedians=False, showextrema=False, widths = 0.6)
axes.set_xticks([y+1 for y in range(2)])
plt.show()

enter image description here

最佳答案

为 matplotlib violinplot 绘制 KDE 的范围是输入值的范围。这在代码中定义得很深,所以没有简单的选择来改变它。

相比之下,seaborn violinplot 可以很好地控制 KDE 范围。默认情况下,它会将显示的 KDE 曲线扩展为图每一侧 KDE 带宽的两倍。这是由 cut 控制的论据 sns.violinplot(, cut=2) ,默认为 2 .如果您设置 cut=0 ,您将获得与 matplotlib violinplot 相同的结果。连同手动选择 KDE 带宽为 float 的选项,sns.violinplot(..., bw = 0.2, cut=2) ,您可以很好地控制 fiddle 图的显示方式。

总之,如果您需要对 KDE 曲线的范围进行细粒度控制,只需使用 seaborn violinplot。

关于python - 如何阻止 fiddle 图切断异常值或极值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45534919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com