我想在一张图上绘制多个频率直方图,但是,我的频率图是锯齿状的而不是很漂亮。如下图所示:
mmin = min([Data]);
mmax = max([Data]);
figure(1);n = hist(Data, x);
f = n/sum(n);
plot(x,f,'r','LineWidth',3)
为了顺利进行,我调查了ksdensity
并根据以下代码创建了下图:
[f,xi] = ksdensity(data);
figure(1)
plot(xi,f);
然而,我注意到我的图表不再在y轴上绘制频率。无论如何使用ksdensity
更正此更改?我真的很喜欢图表看起来与我的频率直方图相反,并希望继续使用ksdensity
,除非有更好的建议。
谢谢!
数据样本: https://www.dropbox.com/s/4ax2cuvugvqxjh6/splicing_attempt2_normalized_combined.txt?dl=0
答案 0 :(得分:2)
这里的诀窍是我不认为你在直方图中正确计算频率。你忽略了箱宽。您的频率应该是每个位置的SNP数量,这需要除以每个容器的(可能是分数)位置的数量。
试试这个:
Data = rand(1, 1e4);
figure(1);
[n, c] = hist(Data, 20);
dc = abs(c(2) - c(1));
f = n./(dc * sum(n));
plot(c,f,'r','LineWidth',3)
[~,f_kde,xi] = kde(Data);
line(xi,f_kde);
我没有统计工具箱,所以我使用的是文件交换kde
功能,但两者的工作方式相同。
如果第一张图确实是你所追求的,那么做一点代数,而不是将直方图值除以bin宽度,而是将kdensity值乘以相同的bin宽度。
正如我在其他histogram answer中提到的,有很多方法可以为直方图选择最佳的bin宽度。为了方便起见,我在这里选择了20个。