1

我提前为我的无知道歉;我只学习 Python 大约两个月。我在 Stack Overflow 上看到的每个示例问题似乎都讨论了一系列数据的单一分布,而不是每个数据点的一个分布,带展宽。

我有一些(基本上)无限细的条,其值为 x,高度为 y,我需要在上面划一条线,使其看起来像下面的照片:

模拟紫外/可见光谱

条形图是从最右侧的数据表中获得的。曲线是我想要做的。

我正在做一些 TD-DFT 工作来计算理论紫外/可见光谱。它将输出特定波长的光(x 值)的吸光度强度(y 值,即高度)。从理论上讲,这些通常被绘制为无限细的条,尽管我们通过实验获得了一条曲线。通过在理论数据上运行一条曲线,可以使理论数据看起来像一个实验光谱,该曲线包含 y=0 并且在每个吸光度条周围都有一个高斯线形。

我不确定是否有一个功能可以为我做到这一点,或者我是否需要做一些事情,比如为每个吸光度制作一个循环求和高斯曲线,然后绘制结果公式。

谢谢阅读!

4

1 回答 1

0

看起来我的答案是使用 Seaborn 进行内核密度估计。因为 KDE 没有加权并且只考虑 x 值的密度,所以我必须创建一个小循环来创建一个新列表,其中包含每个 x 条目乘以它们各自的强度:

for j in range(len(list1)):  #list1 contains x-values
    list5.append([list1[j]]*int(list3[j]))  #list5 was empty; see below for list3

#now to drop the brackets from within the list:

for k in range(len(list5)):  #list5 was just made, containing intensity-proportional x-values
    for l in list5[k]:
        list4.append(l)  #now just a list, rather than a list of lists

(必须在前面列出另一个强度乘以 1000000 以使它们全部为整数):

list3 = [i * 1000000 for i in list2]  #list3 now contains integer intensities
于 2018-03-23T03:49:58.617 回答