R 플롯에서 레이블이 겹치지 않게하려면 어떻게합니까? [닫은]


44

R로 아주 간단한 산점도를 레이블링하려고합니다. 이것이 내가 사용하는 것입니다.

plot(SI, TI)
text(SI, TI, Name, pos=4, cex=0.7)

보시다시피 결과는 평범합니다 (확대하려면 클릭하십시오).

여기에 이미지 설명을 입력하십시오

textxy함수를 사용하여 이것을 보완하려고 시도했지만 더 좋지 않습니다 . 밀집된 클러스터에서는 이미지 자체를 더 크게 만들 수 없습니다.

이를 보완하고 겹치지 않는 R 플롯 레이블을 허용하는 기능이나 쉬운 방법이 있습니까?


내가 가진 데이터의 작은 하위 집합은 다음과 같습니다.

Name;SI;TI
01_BAD_talking_head;6.944714;4.421208
01_GOOD_talking_head;5.680141;4.864035
01_GOOD_talking_head_subtitles;7.170114;4.664205

1
나는 비슷한 질문을 여기에 올렸고 , 거기에 대한 답변을 보았습니다 ..
Curious

3
나는 해결책을 찾았다 ! identify()하자가 수동으로 라벨을 배치 할 위치를 결정입니다! 이상적이지는 않지만 제안 된 솔루션에서 이것이 가장 효과적입니다.
Curious

답변:


29

새 패키지 ggrepel을 확인하십시오 . ggrepel은 ggplot2에 겹치는 텍스트 레이블을 격퇴하기위한 도형을 제공합니다. geom_text 및 geom_label 모두에 대해 작동합니다.

여기에 이미지 설명을 입력하십시오

이 블로그 게시물 에서 그림을 가져옵니다 .


19

directlabels패키지는 않습니다. 그것에서 웹 페이지 :

이 패키지는 격자 및 ggplot2와 같은 고급 플로팅 시스템으로 공통 플롯의 직접 라벨링을 쉽게 수행 할 수있는 유용한 기능을 제공함으로써 일상적인 통계 실습에서 직접 라벨링을 실현하려는 시도입니다.

그러나 밀도가 높은 플롯에는 항상 가능한 것은 아닙니다.

다음은 간단한 예입니다.

set.seed(123)
a <- c(rnorm(10,-3,2),rnorm(10,3,2))
b <- c(rnorm(10,-3,2),rnorm(10,3,2))
dfr <- data.frame(a,b)
dfr$t <- c(paste("A",1:10,sep=""),paste("B",1:10,sep=""))
direct.label(xyplot(b~a,dfr,groups=t, col="black"))

로 포인트 채색을 제거 col="black"했지만 레이블 은 제거 하지 않았습니다.


1
작동시키는 데 문제가 있습니다. 간단한 작업 예제를 제공 할 수 있습니까?
slhck

1
귀하의 경우 direct.label(xyplot(SI~TI,data=yourDataFrame,group=Name))와 비슷한 결과가 비슷해야합니다.
Laurent

완전한. 다음 은 마지막 간단한 예제 사용하여 얻은 결과입니다. 레이블이 속한 위치를 알기 때문에 색상 레이블과 점은 실제로 매우 좋습니다.
slhck

1
일하러 library(lattice)가야 했어요 xyplot.
David J. Harris

14

wordcloud패키지를 살펴 보는 것이 좋습니다 . 이 패키지는 요점이 아니라 레이블 자체에 초점을 맞추고 있으며 스타일도 다소 고정 된 것으로 보입니다. 그러나 여전히 그것을 사용하여 얻은 결과는 놀랍습니다. 또한 해당 패키지 버전은 질문 한 시간에 출시되었으므로 여전히 새 버전입니다.

http://blog.fellstat.com/?cat=11

textplot () 출력


9

나는 내가 작업하고있는 여러 줄거리에서 비슷한 문제에 부딪 쳤고 힘장 시뮬레이션을 사용하여 객체 위치를 조정하는 기본 패키지를 작성했습니다. 위에서 언급 한 솔루션 중 일부에 대한 장점은 2D의 상대 물체 근접성에 대한 동적 조정입니다. 휴리스틱 및 ggplot과의 통합 등 많은 개선이 가능하지만 작업을 수행하는 것으로 보입니다. 다음은 기능을 보여줍니다.

install.packages("FField", type = "source")
install.packages("ggplot2")
install.packages("gridExtra")
library(FField)
FFieldPtRepDemo()

현재 솔루션이 내 요구를 충족함에 따라 다양한 영역과 포인트 분포에 대한 휴리스틱이 없으며 사람들에게 도움이되는 것을 빨리 얻고 싶지만 중기 적으로 추가 할 것입니다. 현재는 차트를 100x100으로 확장하고 필요에 따라 기본 인력 및 반발 매개 변수를 약간 조정하는 것이 좋습니다.


8

당신은 단순히하는 경우에 할 수없는 R에 의해 생산으로 제대로 작동하려면 레이블을 얻을, 당신은 항상하고 (.PDF 등) 벡터 형식으로 그래프 저장 잉크 스케이프 나 어도비 일러스트 레이터와 같은 편집 프로그램으로 끌어 오기 명심하십시오.


8

R에서 살펴볼 몇 가지 추가 도구 :

이것들은 당신을 위해 모든 것을하지는 않지만 그중 하나가 해결책의 일부 일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.