2012-12-06 3 views
3

나는 연구 논문을 작성하고 내 데이터 집합에서 이런 일을 플롯 할거야matlab에 산포도

enter image description here

기본적으로는 평균 가치를 보여주는 LOWESS 곡선 매트랩 분산 플롯이다 각각의 빈

내가 2 일 동안 구글 검색 봤는데 아직

스택 오버플로가 지금 내 마지막 수단 :

이라고 할 수있는 솔루션 또는 샘플 코드의 조각을 찾을 수 없습니다
+1

을 그립니다 밀도 플롯에 hold plot를 사용한다 ] (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

죄송합니다. Dustin, 내 의견이 중단 된 이유를 모르겠다. 나는 당신의 요점을 보았다. 나는 해결책을 찾기 위해 코드를 수정할 수 있었다. 감사합니다 – HuyNA

1

거친 대답, 밀도 분산 플롯을 할 http://www.mathworks.com/matlabcentral/fileexchange/13352를 사용하고, 적절한 해상도로 LOWESS 곡선을 생성하기 위해 MATLAB에서 histc을 사용하고, 나는 [이 생각

+0

안녕하세요 존, 당신이 가진 우아한 솔루션이지만, 내 경우는 smoothhist2D가 로그 스케일 축과 작동하지 않는다는 것을 알았습니다. 그러나 histc를 사용하여 각 bin의 값을 계산하는 것을 좋아합니다. 2cent에 감사드립니다. :) – HuyNA