小编Sam*_*son的帖子

在seaborn的kdeplot上带宽混乱

下面的lineslist代表一组线(对于某些化学光谱,比如说),以MHz为单位.我知道用于探测这些线的激光器的线宽为5 MHz.因此,天真地,带宽为5的这些线的核密度估计应该给我在使用上述激光器的实验中产生的连续分布.

以下代码:

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
lineslist=np.array([-153.3048645 ,  -75.71982528,  -12.1897835 ,  -73.94903264,
   -178.14293936, -123.51339541, -118.11826988,  -50.19812838,
    -43.69282206,  -34.21268228])
sns.kdeplot(lineslist, shade=True, color="r",bw=5)
plt.show()
Run Code Online (Sandbox Code Playgroud)

产量

根据理论线预测连续实验光谱,带宽= 5 MHz

这看起来像带有远大于5 MHz的带宽的高斯.

我猜测由于某种原因,kdeplot的带宽与图本身的不同.最高和最低线之间的间隔约为170.0 MHz.假设我需要通过以下因素重新调整带宽:

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
lineslist=np.array([-153.3048645 ,  -75.71982528,  -12.1897835 ,  -73.94903264,
   -178.14293936, -123.51339541, -118.11826988,  -50.19812838,
    -43.69282206,  -34.21268228])
sns.kdeplot(lineslist, shade=True, color="r",bw=5/(np.max(lineslist)-np.min(lineslist)))
plt.show()
Run Code Online (Sandbox Code Playgroud)

我明白了: 在此输入图像描述

线条似乎具有预期的5 MHz带宽.

作为解决方案的花花公子,我已经把它从我的屁股中拉出来了,我很好奇是否有人更熟悉seaborn的kdeplot内部可以评论为什么会这样.

谢谢,

塞缪尔

python visualization matplotlib seaborn

2
推荐指数
1
解决办法
2278
查看次数

标签 统计

matplotlib ×1

python ×1

seaborn ×1

visualization ×1