사용데이터 : https://2stndard.tistory.com/68
R이든 python이든 어떤 툴을 사용해서 데이터 분석을 시작할 때는 대부분 데이터를 살펴보는 일부터 시작한다. 데이터에 대한 기술통계를 구해서 NA값이라든지 전체 분포를 살펴보고 연관이 있어 보이는 변수에 대해 산점도를 그려서 데이터의 전체적인 분포를 살펴보기 마련이다.
산점도를 그려서 데이터를 확인할 때 가장 애매한 것이 분석자가 관심있는 데이터가 어디에 위치하는지 알아보는 것이다. 물론 이를 위해 색을 달리 처리한다든지 모양을 달리 처리한다든지 할 수 있겠지만 관심있는 데이터가 많으면 색이나 모양과 데이터를 매칭한다는 것도 헤깔리는 일임에 틀림없다. 이런 경우 해당 데이터에 라벨을 표시해주면 한눈에 알아보기 쉽지만 데이터가 겹치면 또 알아보기 힘들다.
ggpplot2
에서는 ggrepel
패키지에서 제공하는
geom_text_repel()
과 geom_label_repel()
을
사용하면 겹치지 않게 텍스트나 라벨을 붙여줄 수 있다. 그렇다면
plotly
에서 산점도에서 겹치지 않도록 라벨을 붙여주는 방법을
알아보자.
plotly
로 그려진 시각화에서도 겹치지 않는 라벨을 위한
패키지가 제공되는데 easylabel
을 사용한다.
install.packages('easylabel')
library(easylabel)
easylabel
패키지에서 제공하는 라벨을 그리는 함수는
easylabel()
이다. easylabel()
은 shiny와 plotly
기반의 시각화로 산점도를 보여준다. 여기서 하나 주의해야 하는 것은
plotly
에서 변수 매핑에 ~
를 사용했지만
easylabel()
에서는 따옴표를 사용해 준다는 것이다. 또
기본적으로 사용하는 라벨 텍스트는 데이터프레임의 ’rowname’을 사용하는데
만약 ’rowname’이 설정되지 않았다면 labs
매개변수로
설정해주어야 한다.
column_to_rownames(df_covid19_stat, var = 'location') |>
easylabel::easylabel(x = '십만명당사망자수', y = '백신접종완료률')
df_covid19_stat |>
easylabel::easylabel(x = '십만명당사망자수', y = '백신접종완료률',
labs = 'location')
위의 코드를 실행시키면 아래와 같은 shiny app이 실행이 된다.
여러가지 기능에 대한 버튼들이 있는데 정작 라벨 이름이 표시되어 있지 않다. 라벨 이름을 표시하기 위해서는 산점도의 점을 클릭하면 해당 점에 해당하는 라벨이 표시되고 표시된 라벨을 드래그하면 라벨의 위치를 조절할 수 있다.
만약 shiny app을 실행하지 않고 plotly
객체로
시각화하려면 output_shiny = FALSE
를 매개변수로 사용한다.
다만 이 경우는 shiny app처럼 마우스 클릭으로 라벨이 추가되지 않는다.
따라서 이 경우는 startLabels
매개변수에 표시되어야 할
데이터 레벨을 벡터로 전달해 줌으로써 표시할 수 있다.
아래의 plotly
에서도 라벨을 원하는 위치로 옮겨볼 수
있다.
df_covid19_stat |>
easylabel::easylabel(x = '십만명당사망자수', y = '백신접종완료률',
labs = 'location',
startLabels = pull(df_covid19_stat[df_covid19_stat$location %in% c('South Korea', 'United Kingdom', 'France', 'United States'), 'location']),
output_shiny = FALSE)
'Plotly in R - 그래프에 마우스를 올려봅시다' 카테고리의 다른 글
plotly 사용하기 (0) | 2022.04.26 |
---|---|
반 반 바이올린 플롯 in R (6) | 2022.04.26 |
plotly trace의 공통 속성(Attribute) - color, colors (0) | 2022.04.20 |
plotly trace의 공통 속성(Attribute) - hovertext, hoverinfo, hovermode, hovertemplete (0) | 2022.04.18 |
plotly trace의 공통 속성(Attribute) - text, textposition, texttemplate, textfont (0) | 2022.04.17 |
댓글