2012-08-24 6 views
4

R에서 일부 밀도 플롯을 만들려고합니다. 원래 밀도 플롯을 사용했지만 ggplot2를 시각적으로 선호하기 때문에 밀도 플롯을 ggplot2로 변경했습니다.R : 밀도 플롯 대 ggplot2의 밀도 플롯

그래서 밀도 플롯 기능을 사용하여 밀도 플롯을 작성하고 ggplot2 (아래 참조)에서 밀도 플롯을 수행했지만 플롯이 동일하지 않은 것으로 나타났습니다. 일부 y 값은 ggplot2에서 손실되거나 삭제 된 것 같습니다 (오른쪽 그림). 특별한 이유가 있습니까? ggplot을 destiny plot (왼쪽 그림)과 동일하게 만들려면 어떻게해야합니까?

enter image description here

코드 :

시행 착오를 바탕으로
library(ggplot2) 
library(grid) 
par(mfrow=c(1,2)) 

# define function to create multi-plot setup (nrow, ncol) 
vp.setup <- function(x,y){ 
grid.newpage() 
pushViewport(viewport(layout = grid.layout(x,y))) 
} 

# define function to easily access layout (row, col) 
vp.layout <- function(x,y){ 
    viewport(layout.pos.row=x, layout.pos.col=y) 
} 


vp.setup(1,2) 

dat <- read.table(textConnection(" 
low high 
10611.0 14195.0 
10759.0 14437.0 
10807.0 14574.0 
10714.0 14380.0 
10768.0 14448.0 
10601.0 14239.0 
10579.0 14218.0 
10806.0 14510.0 
"), header=TRUE, sep="\t") 

plot(density(dat$low)) 

dat.low = data.frame(low2 = c(dat$low), lines = rep(c("low"))) 

low_plot_gg = (ggplot(dat.low, aes(x = low2, fill = lines)) + 
stat_density(aes(y = ..density..)) + 
coord_cartesian(xlim = c(10300, 11000)) 
) 
print(low_plot_gg, vp=vp.layout(1,2)) 
+0

기본 그래픽과 격자 그래픽의 혼합이 완전히 성공하지 못했습니다. –

답변

6

, 당신이

+ xlim(c(10300,11000)) 

보다는

+ coord_cartesian(xlim = c(10300, 11000)) 

원하는 모양은 플롯의 한계를 확장하지만 그 안에 그려진 것을 전혀 변경하지 않습니다 ...

+0

D' oh, 그래서 여기에서 분명한 것을 놓쳤다. 당신의 도움을 주셔서 감사합니다. – Harpal

0

값을 잃어 버리는 데 문제가 없습니다. 함수 plot(density())은 극단적 인 값에 대해 스무딩을 진행하지만 작은 데이터 셋에는 정확하지 않습니다. 더 큰 데이터 세트의 경우 두 플롯이 동일합니다.