下面的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的带宽的高斯.
我猜测由于某种原因,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内部可以评论为什么会这样.
谢谢,
塞缪尔