geom_point의 크기에 상대적인 위치로 geom_text 또는 geom_label을 추가하는 방법은 무엇입니까?

부드러운 양가죽

내가하려는 것은 크기에 매핑 된 변수가있는 geom_point로 만든 포인트에 레이블을 추가하는 것입니다. 값은 레이블에도 표시됩니다. 텍스트 또는 레이블은 geom_point 바로 아래에 위치해야하지만 position_nudge로이를 달성하는 것은 불가능 해 보입니다.

내 코드는 현재 다음과 같습니다 (간체).

ggplot(data, aes(x = var1, y = var2) +
   geom_point(aes(size = var3)) +
   geom_text(aes(label = var3))

결과는 이쪽

2

그러나 나는 다음과 같은 것을 성취하려고 노력하고 있습니다.

1

이것을 간단한 방법으로 달성 할 수있는 방법이 있습니까?

감사.

편집 : geom_point의 경계와 레이블의 경계 사이의 거리가 고정 값이되도록 노력하고 있습니다.

Tjebo

나는 이것이 다른 대답을 할만 큼 충분히 다르기를 바랍니다. 나는 정확히 당신이 레이블을 배치하기를 원했던 것에 대해 약간 간과했음을 인정합니다. 따라서 기본적으로 포인트 중심이 아니라 반경을 기준으로합니다.

저는 이 커뮤니티에서 제 자신의 첫 번째 질문을 떠올리게하는 느낌이 들었습니다 .이 질문에 대한 답을 오랫동안 이해하지 못했음을 인정합니다.

기본 아이디어는 geom_point 를 사용 하지 않고 ggforce :: geom_circle (또는 : geom_ellipse)를 사용하는 것입니다. 레이블 위치 지정을 위해 생성에 사용하는 반경을 사용할 수 있습니다. 약간의 하드 코딩이 필요하지만 일반 좌표를 기반으로 반경을 프로그래밍 방식으로 정의하는 방법이있을 것입니다.

library(ggplot2)
library(ggforce)

foo <- data.frame(var1 = rep(1:3, 2),  var2 =rep(1:2, each = 3),
                   var3 = c(3, 10, 2, 1, 1, 10))
# Create cuts - you can also assign other values of course. factor of 0.01 was chosen randomly. 
foo$rad <- 0.01 * findInterval(foo$var3, 1:5)

ggplot(foo) +
  geom_circle(aes(x0 = var1, y0 = var2, r = rad),
              fill = "Grey50") +
  geom_text(aes(x = var1, y = var2 - rad - 0.03, label = var3)) +
  coord_equal()

reprex 패키지 (v0.3.0)에 의해 2021-01-20에 생성됨

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관