2013-11-21 2 views
3

나는 등고선도를 만들기 위해 ggplot2을 사용하고 있습니다. 나는 다른 지역에서의 데이터를 가지고 있기 때문에 분할 된 데이터로 등고선 그래프를 만들려고합니다. 나는 같은 음모에 그것들을 보여주고 싶지만, 등고선을 정렬시키지 마라.ggplot2에서 직접 라벨을 사용하여 기본 레이어와 다른 데이터로 두 번째 레이어에 라벨을 지정

내가 원하는대로 윤곽을 만들 수 있습니다.

library(ggplot2) 
library(directlabels) 
data(volcano) 

volcano3d <- melt(volcano) 
names(volcano3d) <- c("x", "y", "z") 

#Splitting the data into 2 halves 
volcano3d_1<-volcano3d[volcano3d$x<50,] 
volcano3d_2<-volcano3d[volcano3d$x>=50,] 

#Changing the z values of the 2nd half 
volcano3d_2$z<-volcano3d_2$z+30 

#Plotting 
v <- ggplot(volcano3d_1,aes(x, y, z = z))+ 
stat_contour(aes(colour = ..level..))+ 
stat_contour(data=volcano3d_2,aes(x,y,z=z,colour=..level..)) 
direct.label(v) 

그러나, 나는지도의 두 번째 부분에 라벨을 추가 할 수 direct.label를 얻을 수 : 여기 비슷한 예입니다. 난이도가 기본 ggplot 레이어와 다른 데이터가있는 레이어에 라벨을 지정하는 것이 어려워 보이는 것 같습니다. 누구든지 두 레이어에 레이블을 지정할 수있는 방법을 알고 있습니까?

+0

제시된 내가 당신의 예제를 실행하면, 새로운 Z-레이블 작동하는 것 같다. 네가 쫓아 다니는게 아니야? – Troy

+0

내게는지도의 일부에만 레이블을 붙인다. 여기서 x <50이지 새로운 z가있는면이 아니다. –

답변

2

사용 geom_dl 추가 레이어 레이블을 :

WithLegend <- ggplot(volcano3d_1,aes(x, y, z=z, colour=..level..))+ 
    stat_contour()+ 
    stat_contour(data=volcano3d_2) 
## direct.label labels the first colored layer. 
SomeLabels <- direct.label(v) 
## Additional labels can be added using geom_dl layers. 
MoreLabels <- SomeLabels+ 
    geom_dl(aes(label=..level.., colour=..level..), 
      data=volcano3d_2, method="top.pieces", stat="contour") 
+0

안녕하세요, 감사합니다. 그것이 바로 내가해야 할 일입니다. 나는 지금까지 가난한 사람들과 함께 해왔다. 게시 해 주셔서 감사합니다. –

관련 문제