2013-12-08 2 views
3

음모를 꾸미고 싶은 데이터 프레임이 있지만 너무 커서 음모가 약간 혼란스럽고 싶습니다. 단계를 시각화하고 비교하기 위해 단계별로 구축하십시오.데이터 프레임의 부분 집합을 단계적으로 ggplot에 추가하는 방법

V1<-rnorm(50) 
V2<-rnorm(50) 
V3<-c(rep("A",10),rep("B",10),rep("C",10),rep("D",10),rep("E",10)) 
V4<-V2+.1 
DF<-data.frame(V1,V2,V3,V4) 

내 플롯 코드는 다음과 같습니다 : 여기

몇 가지 더미 데이터입니다

내 모든 원하는 미학을 가지고 있지만 보면 너무 너무 혼란
ggplot(DF,aes(x=V1,y=V2,size=V4,label=DF$V3),legend=FALSE)+ 
scale_y_continuous(limits = c(-3, 3))+ 
scale_x_continuous(limits = c(-3, 3))+ 
geom_point(color="black",fill='red',shape=21)+ 
geom_text(size=2)+theme_bw()+ 
scale_size(range = c(5, 20)) 

. 그래서 나는 데이터 변수를 문자 변수로 쪼개었다. 이것은 관심 변수 일 것이다. 이제

S<-split(DF,DF$V3) 

이상적으로 나는 빈 줄거리로 시작하고 A에 대한 데이터를 추가 할 다음, B, 다음 C, D 및 E 단계적으로 나는 방법의 각 단계를 인쇄 할 수 있도록 . 각 플롯은 동일한 미학을 가지며 V4에서 크기를 그리고 V3에서 레이블을 그립니다.

는 그래서 같은 연속 geom_point 추가로 레이어를 추가하는 시도 : 난 그냥 최대한 빨리 추가를 시작으로 A와 B 모두 geom_point의 첫 번째 줄에두고 있지만, 경우에 작동

ggplot(DF,aes(x=V1,y=V2,size=V4))+ 
scale_y_continuous(limits = c(-3, 3))+ 
scale_x_continuous(limits = c(-3, 3))+ 
theme_bw()+ 
geom_blank()+ 

geom_point(data=S$"A",color="black",fill='red',shape=21)+ 
aes(label=S$'A')+ 
geom_text(size=2)+ 
scale_size(range=c(5,20))+ 

geom_point(data=S$'B',color="black",fill='red',shape=21)+ 
aes(label=S$'B')+ 
geom_text(size=2)+ 
scale_size(range=c(5,20)) 

레이블 및 기타 세부 사항 나는 빨리 오류가 발생합니다.

답변

3

첫 번째 부분 집합을 플롯하여 객체로 저장할 수 있습니다.

p<-ggplot(S$A,aes(x=V1,y=V2,size=V4,label=V3),legend=FALSE)+ 
    scale_y_continuous(limits = c(-3, 3))+ 
    scale_x_continuous(limits = c(-3, 3))+ 
    geom_point(color="black",fill='red',shape=21)+ 
    geom_text(size=2)+theme_bw()+ 
    scale_size(range = c(5, 20)) 

그런 다음 %+%을 사용하여 플롯을 업데이트하십시오. 두 번째 예에서 do.call()은 목록 요소에서 하나의 데이터 프레임을 가져 오는 데 사용됩니다.

#to replace subset A with subset B 
p %+% S$B 

#to replace subset A with first three subsets  
p %+% do.call(rbind,S[1:3]) 
관련 문제