3

我正在写一篇研究论文,并想从我的数据集中绘制类似的东西

在此处输入图像描述

基本上它是一个 Matlab 散点图,带有一条显示每个 bin 的平均值的 lowess 曲线

我已经在 Google 上搜索了 2 天,但找不到解决方案或一段示例代码来做到这一点

Stack Overflow 现在是我最后的手段了 :)

4

2 回答 2

2

这是我能想到的最简单的代码。这假设您有 x 和 y 向量中的数据。

%adjust bins accordingly, or add a line that calculates them based on range.
bins = -0.5:0.01:0.5;
nBins = length(bins);

for index = 1:(nBins-1)

  binVec = (x >= bins(index) & x < bins(index+1));
  lowess(index) = mean(y(binvec));

end
%note that bins are shifted by one half step.
plot(x,y,'.',bins+0.005,lowess,'--r');

可以将其矢量化,但不值得。至少我发现的方式会使它变得不可读并且稍微更有效率,如果有的话。

于 2012-12-07T00:34:41.210 回答
1

一个粗略的答案是,使用http://www.mathworks.com/matlabcentral/fileexchange/13352做密度散点图,并histc在 matlab 中使用以适当的分辨率生成 lowess 曲线,并hold plot在您的密度图上使用画

于 2012-12-07T15:22:18.137 回答