gpt4 book ai didi

python - 如何更好地拟合seaborn fiddle 情节?

转载 作者:太空宇宙 更新时间:2023-11-03 11:22:37 27 4
gpt4 key购买 nike

以下代码为我提供了一个非常漂亮的 fiddle 图(以及其中的箱线图)。

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

foo = np.random.rand(100)
sns.violinplot(foo)
plt.boxplot(foo)
plt.show()

output

到目前为止一切顺利。但是,当我查看 foo 时,该变量不包含任何负值。 seaborn 情节在这里似乎具有误导性。普通的 matplotlib 箱线图给出的结果更接近我的预期。

如何制作更合适的 fiddle 图(不显示假负值)?

最佳答案

正如评论所指出的,这是基于 gaussian KDE 的假设的结果(我不确定我是否称其为“人工制品”)。如前所述,这在某种程度上是不可避免的,如果您的数据不符合这些假设,您最好只使用箱线图,它仅显示实际数据中存在的点。

但是,在您的回复中,您询问它是否可以“更紧”地合身,这可能意味着一些事情。

一个答案可能是改变平滑内核的带宽。你用 bw 参数来做到这一点,它实际上是一个比例因子;将使用的带宽是 bw * data.std():

data = np.random.rand(100)
sns.violinplot(y=data, bw=.1)

enter image description here

另一个答案可能是在数据点的极端处截断 fiddle 。 KDE 仍将适合密度超出数据范围的密度,但不会显示尾部。您可以使用 cut 参数执行此操作,该参数指定应绘制密度极值后的带宽单位数。要截断,请将其设置为 0:

sns.violinplot(y=data, cut=0)

enter image description here

顺便说一下,violinplot 的 API 是 going to change在 0.6 中,我在这里使用的是开发版本,但是 bwcut 参数都存在于当前发布的版本中,并且行为方式大致相同。

关于python - 如何更好地拟合seaborn fiddle 情节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39846760/

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