2017-10-04 11 views
0

ggplot2의 두 레이어가 겹치지 않게하려면 어떻게해야합니까? 나는 그들이 포인트 위에 놓이지 않도록 텍스트를 표시하려고합니다.ggplot2에서 geom_point 및 geom_text가 중복되지 않도록하십시오.

check_overlap 다른 텍스트가 아닌 텍스트 자체가 겹쳐지는 것을 피하면서 훌륭한 작업을 수행합니다.

또한 geom_text_repel 라이브러리를 사용해 보았지만이 라이브러리는 check_overlap을 지원하지 않으며 모든 데이터 포인트의 텍스트를 보여줍니다.

그러나 모든 포인트에 대해 텍스트가 필요하지 않습니다 (예 : check_overlap).

ggplot(dat, aes(x = CPI, y = HDI)) + 
    geom_point(aes(color = Region), shape=21, size=4, position = "identity") + 
    geom_text(data = dat, aes(label = Country), size=4, check_overlap = TRUE) 
+5

['ggrepel'] (https://cran.r-project.org/web/packages/ggrepel/index.html) – hrbrmstr

+0

각에서 반복 된 라벨을 제거 할 수 데이터 포인트 & ggrepel에서'geom_text_repel'을 사용합니까? –

+0

나는'geom_text_repel'을 시도했지만'geom_point'에있는 모든 데이터 포인트의 레이블이나 텍스트를 보여줍니다. – Max

답변

0

geom_text_repel은 빈 문자열 ""에 대한 텍스트 레이블을 작성하지 않습니다. 그러나 텍스트 레이블은 레이블이없는 데이터 요소로부터 멀리 떨어지게됩니다.

이 시도 :

# Hide text labels for the first 3 data points 
idx <- c(1,2,3) 

dat$CountryLabel  <- dat$Country 
dat$CountryLabel[idx] <- "" 

library(ggrepel) 
ggplot(...) + geom_text_repel(data = dat, aes(label = CountryLabel))