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

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



답변

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

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

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


답변

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"했지만 레이블 은 제거 하지 않았습니다.


답변

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

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

textplot () 출력


답변

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

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

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


답변

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


답변

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

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


답변