2012-12-06 160 views
3

我正在寫論文,並且想從我的數據集劇情是這樣的Matlab的散點圖與LOWESS曲線

enter image description here

基本上這是一個Matlab的散點圖用LOWESS曲線顯示了在平均值每個箱

我一直在尋找谷歌2天,但沒有找到一個解決方案或樣例代碼爲做到這一點尚未

堆棧溢出現在是我的最後一招:)

+1

我認爲[這](http://www.mathworks.com/matlabcentral/fileexchange/19506-binned-scatter-plot)做的很好你在找什麼/正在尋找 – Arthur

回答

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'); 

可以對此進行矢量化,但它不值得。至少我發現的方式會使它變得不可讀,並且稍微有效一些。

+0

達斯汀我看到你的觀點, – HuyNA

+0

這是否適合你?如果是這樣,你可以請點擊選擇它作爲答案? – dustincarr

+0

對不起達斯汀,我不知道爲什麼我的評論被打斷,我的意思是我看到你的觀點,我能夠修改你的代碼來提出解決方案。謝謝 – HuyNA

1

粗略的答案,就是使用http://www.mathworks.com/matlabcentral/fileexchange/13352做密度散點圖,並使用histc在MATLAB中產生在適當的分辨率LOWESS曲線,並使用hold plot您密度圖繪製

+0

嗨,約翰,這是一個優雅的解決方案,但我發現smoothhist2D不支持對數座標軸,這是我的情況。不過,我喜歡使用histc來計算每個bin中的值,謝謝你的2cent :) – HuyNA