2012-11-23 7 views
0

은 내가 한 약간 이상한 결과를 얻고있다 ggplot2 2D 밀도 무게

R.

에 ggplot2를 사용하여 2D 밀도 윤곽 일부 데이터를 플롯하기 위해 노력하고있어.

p <- ggplot(data, aes(x=Distance,y=Rate, colour = Company)) 

그때 geom_points 및 geom_density2d으로이 음모 :

먼저 내 ggplot 객체를 설정합니다. 나는 조직의 규모 (OrgSize 변수)에 따라 가중 될 geom_density2d합니다. 나는 가중치 변수 아무것도로 OrgSize를 추가 할 때 플롯의 변화 :

p+geom_point()+geom_density2d() 

이에 동일한 플롯 제공합니다 :이

, 그러나

p+geom_point()+geom_density2d(aes(weight = OrgSize)) 

을 내가와 동일한 작업을 수행하는 경우 geom_smooth를 사용하는 황토 줄은 가중치가 명확한 차이를 만듭니다.

이 :

p+geom_point()+geom_smooth() 

이에 다른 플롯 제공합니다 :

p+geom_point()+geom_smooth(aes(weight=OrgSize)) 
내가 부적절 density2d 사용하고 있다면 궁금

, 내가 대신 윤곽을 사용하고 OrgSize을 공급해야을 ' 신장'? 그렇다면 geom_density2d가 가중치 인수를 허용하는 이유는 무엇입니까? 아래

코드 :

require(ggplot2) 

Company <- c("One","One","One","One","One","Two","Two","Two","Two","Two") 
Store <- c(1,2,3,4,5,6,7,8,9,10) 
Distance <- c(1.5,1.6,1.8,5.8,4.2,4.3,6.5,4.9,7.4,7.2) 
Rate <- c(0.1,0.3,0.2,0.4,0.4,0.5,0.6,0.7,0.8,0.9) 
OrgSize <- c(500,1000,200,300,1500,800,50,1000,75,800) 

data <- data.frame(Company,Store,Distance,Rate,OrgSize) 

p <- ggplot(data, aes(x=Distance,y=Rate)) 

# Difference is apparent between these two 
p+geom_point()+geom_smooth() 
p+geom_point()+geom_smooth(aes(weight = OrgSize)) 

# Difference is not apparent between these two 
p+geom_point()+geom_density2d() 
p+geom_point()+geom_density2d(aes(weight = OrgSize)) 

답변

2

geom_density2d 무게 매개 변수를 "수용"하지만, 그 기능이 더 무게가 없기 때문에 다음 MASS::kde2d에 전달되지 않습니다. 결과적으로 다른 2 차원 밀도 방법을 사용해야 할 것입니다.

(필자의 대답은 geom_density2d가 weight 인수를 "이해하고있다"라는 도움말 페이지의 내용을 다루지 않았지만 가중치 2D-KDE를 계산할 때 MASS 외에 다른 패키지를 사용해야한다는 것입니다. @hadley가 간과 한 헬프 페이지에 넣은 TODO입니까?)

+1

다른 사람들도 링크를 가지고 있기 때문에,이 문제는 이미 ggplot2 Github 페이지에서 제기되었습니다 : https://github.com/hadley/ggplot2/문제/79 – Tumbledown

+0

외모는 결코 경우처럼 프로젝트 목록에 매우 높은 얻었다. 페이지 상단의 링크 (404) - 에드하지만 뒤로 기계 보관했습니다 https://web.archive.org/web/20100731010451/http://web.mit.edu/piantado/www/blog/nonindep 밀도 –