我正在写一篇研究论文,并想从我的数据集中绘制类似的东西
基本上它是一个 Matlab 散点图,带有一条显示每个 bin 的平均值的 lowess 曲线
我已经在 Google 上搜索了 2 天,但找不到解决方案或一段示例代码来做到这一点
Stack Overflow 现在是我最后的手段了 :)
我正在写一篇研究论文,并想从我的数据集中绘制类似的东西
基本上它是一个 Matlab 散点图,带有一条显示每个 bin 的平均值的 lowess 曲线
我已经在 Google 上搜索了 2 天,但找不到解决方案或一段示例代码来做到这一点
Stack Overflow 现在是我最后的手段了 :)
这是我能想到的最简单的代码。这假设您有 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');
可以将其矢量化,但不值得。至少我发现的方式会使它变得不可读并且稍微更有效率,如果有的话。
一个粗略的答案是,使用http://www.mathworks.com/matlabcentral/fileexchange/13352做密度散点图,并histc
在 matlab 中使用以适当的分辨率生成 lowess 曲线,并hold plot
在您的密度图上使用画