2017-02-14 19 views
0

다각형지도에 라벨 텍스트 레이어를 만들고 싶습니다.geom_text - ggplot2를 사용하여 중심선을 찾고 다각형에 텍스트 추가 -

id long lat order hole piece group locid location 

0 long1 lat1 1  false 1  0.1  1  TEXT I WANT 
0 long2 lat2 2  false 1  0.1  1  TEXT I WANT 
1 long3 lat3 3  false 1  1.1  2  TEXT I WANT2 
1 long4 lat4 4  false 1  1.1  2  TEXT I WANT2 
-

Labeling center of map polygons in R ggplot

ggplot centered names on a map

다음과 같이 (그들은 좌표 나는 명확성을 위해 길고 위도 간체) 내 dataframe : 이 아래의 두 가지에서 매우 유사한 쿼리입니다

이것은 현재 코드이며, 검은 색지도를 반환합니다. 모든 긴 좌표와 위도 좌표에 대한 텍스트가 있다고 가정합니다. 나는 다각형 중심마다 텍스트 레이어를 추가 할 수 있도록 각 다각형의 중심을 찾기 위해 고심하고 있습니다. 좌표의 수단을 사용하여 다각형 내의 텍스트를 중심으로하는하지만 - 위의 링크에서 Andrie의 입력을 바탕으로

testtext <- ggplot() + 
      geom_polygon(data = df, mapping = aes(x=long, y=lat, group = group, fill=location)) + 
      geom_text(data = df, mapping = aes(x=long, y=lat, group = group, label=location)) + 
      geom_path(color = "white") + 
      scale_fill_hue(l=40) + 
      coord_equal() + 
      theme(legend.position = "none", title = element_blank(), axis.text = element_blank()) 

많은 감사

+1

에 보이는 것 [_reproducible_] (http://stackoverflow.com/questions/5963269) 귀하의 예제를 확인하시기 바랍니다. – Axeman

+0

링크를 주셔서 감사합니다, 편집 할 것입니다 - 그건 내가 여러 개의 다각형, 따라서 내 df에서 관측을 가지고 일부 좌표를 추가하는 복잡합니다. – Chrisftw

+2

적절한'sp' 객체를 가지고 있다면'coordinates()'는 폴리곤의 중심을 제공합니다. –

답변

1

Andrie's asnwer on ggplot centered names on a map

, 나는 트릭을 수행하는 aggregate()와 새로운 벡터를 생성 논쟁의 여지가있다. coordinates() @Roman Luštrik

library(ggplot2) 
centroid <- aggregate(cbind(long,lat) ~ location, data=df, FUN=mean) 
testtext <- ggplot() + 
      geom_polygon(data = df, mapping = aes(x=long, y=lat, group = group, fill=location)) + 
      geom_text(data = centroid, mapping = aes(x=long, y=lat, label=location)) + 
      geom_path(color = "white") + 
      scale_fill_hue(l=40) + 
      coord_equal() + 
      theme(legend.position = "none", title = element_blank(), axis.text = element_blank())