geom_text() 함수 개요
geom_text() 함수는 ggplot2 패키지에서 사용되는 함수로, 플롯 위에 텍스트 레이블을 추가하는 데 활용됩니다. geom_text() 함수를 사용하여 그래프의 특정 지점에 point 대신 text를 표시하거나, 데이터 point에 label(색인)을 부여할 수 있습니다. geom_text() 함수를 이용하면 표시되는 text의 글씨체(font), 스타일(fontface) 등을 사용자가 자유롭게 조정할 수 있습니다.
하지만 아무래도 text만 시각화한 경우보다는 point와 text를 함께 사용하여 시각화하는 경우가 많습니다. 이는 text가 특정 point에 대한 label이라는 것을 쉽게 전달할 수 있기 때문인데요, 이와 같은 경우에는 geom_text() 함수와 geom_point() 함수를 같이 사용하도록 코드를 작성하면 됩니다. 즉, 아래의 코드와 같이 ggplot 코드에 geom_text()와 geom_point() 함수를 동시에 추가하는 것입니다.
이 경우 주의할 점은 point와 text가 동일한 위치에 배치되기 떄문에 text가 point와 겹치지 않도록 위치를 조정하는 것이 보다 나은 품질의 시각화에 중요합니다. 아래 코드에서는 text가 point 아래 우측에 위치하도록 설정하였습니다. 여기서 hjust는 수평위치(left/right), vjust는 수직위치(top/down) 조정 인자입니다.
ggplot(df, aes(trt, resp))+geom_point()+ geom_text(aes(label=trt), hjust="right", vjust="down"))
text 크기 및 기울기 조정 - size, angle
geom_text() 함수에서 text의 크기와 기울기를 조정하는 방법에 대해 살펴보겠습니다. 두 경우 모두 아주 간단합니다. geom_text() 함수의 인수로 size 및 angle 값을 조정해주면 됩니다.
size 인자에 4와 같은 숫자값을 입력하면 해당 크기의 text가 출력되며, 사용자는 숫자값의 크기를 조정해서 text 크기를 조정할 수 있습니다. 이렇게 숫자값을 입력하는 경우 이외의 방법이 또 있습니다. 아래 코드와 같이, size 인자에 "S" 를 입력하면 텍스트의 크기가 해당 데이터 point의 크기에 따라 text의 사이즈가 자동으로 조절됩니다.
또한, angle 인자에 45와 같이 특정 숫자값을 입력하면 해당 각도의 angle로 기울어진 text가 출력됩니다.
text의 기울기를 조정하다가 text가 그림 밖으로 튀어나가 일부가 잘리는 현상이 발생한할 수 있습니다. 이 경우에는 1) hjust 및 vjust 인자에 "inward"를 입력해주거나, 2) xlim 및 ylim 함수를 이용해서 그림 범위를 넓게 잡아 text가 튀어나가는 문제를 해결할 수 있습니다.
다음의 코드에서는 size에 "S"를 입력하였고, xlim과 ylim 함수를 추가 적용해서 그림의 범위를 넓게 잡아 text가 그림 범위를 이탈하는 문제를 해결했습니다.
ggplot(df, aes(x,y))+geom_point()+ geom_text(aes(label=text, angle=a, size=S)+
xlim(0, 3)+ylim(0.3)
text 간 겹치지 않도록 - check_overlap
만약 데이터 규모가 크고 특정 위치에 겹치는 데이터가 많아 geom_text() 함수를 적용했을 때 시각화한 품질이 떨어진다면, text들이 서로 겹치지 않으면서 깔끔하게 출력되도록 도와주는 check_overlap 인자를 추천드립니다. geom_text() 함수의 check_overlap 인자는 특정 위치에 여러 text가 겹친다면, 가장 앞에 있는 text만을 출력하도록 하여 시각화 품질을 높여줍니다.
다음의 예에서는 ggplot2 패키지에 내장되어 있는 샘플 데이터셋 중 하나인 mpg 데이터셋을 활용하였습니다. mpg 데이터셋은 다양한 자동차 모델별 연료 효율성과 관련된 데이터를 포함하고 있습니다. 아래 코드는 displ(배기량), hwy(고속도로 연비)의 관계를 geom_text() 함수를 사용하여 시각화하였습니다.
displ과 hwy가 반비례 추세를 보여 배기량이 증가함에 따라 고속도로 연비가 감소하는 경향을 확인할 수 있고, geom_text() 함수의 check_overlap 인자에 "TRUE"를 입력해주었기 때문에 각 위치에서 가장 높은 비중을 차지하는 자동차 모델(model)이 text로 표시되게 됩니다.
ggplot(mpg, aes(displ, hwy))+ geom_text(aes(label=model),
check_overlap=TRUE)+xlim(1,8)
'Data Science' 카테고리의 다른 글
대표적인 범주형 plot, geom_bar() (0) | 2023.12.30 |
---|---|
산점도와 함께 쓰는 geom_smooth() (0) | 2023.12.30 |
통계값 시각화 방법 (0) | 2023.12.30 |
범주형+연속형 변수, boxplot & violin 함수 활용 (0) | 2023.12.30 |
geom_point 함수, 연속형 변수 시각화 (0) | 2023.12.29 |