본문 바로가기
  • plotly로 바로쓰는 동적시각화 in R & 파이썬
Plotly in R - 그래프에 마우스를 올려봅시다

원 그래프 in R - plotly pie trace

by 아참형인간 2022. 7. 26.
pie.knit

사용데이터 : https://2stndard.tistory.com/68

파이(pie) trace : 원 그래프

ggplot2에서 지원하지 않는 그래프 스타일이 원 그래프이다. 그래서 ggplot2에서 원 그래프를 그리기 위해서는 막대 그래프를 그리고 이 막대 그래프를 극 좌표계를 사용하여 돌리는 트릭을 사용한다. 원 그래프는 데이터를 정확히 분석하기 어렵다는 차원에서 데이터 분석가들이 잘 사용하지 않는 그래프 타입이지만 현실적으로 많이 사용되고 있기 때문에 plotly에서는 trace로 지원한다.

앞선 여타 trace와는 달리 파이 trace에는 X, Y축에 매핑되는 x, y 속성의 설정이 없다. 대신 필수적 속성으로 valueslabels를 설정해야한다.

values에 매핑되거나 설정된 수치 벡터에 따라 원을 각각의 슬라이스로 구분하게 되고 labels에 매핑하거자 설정한 벡터가 각각의 trace 이름으로 설정된다. 또 원 그래프에 표시되는 데이터 값은 기본적으로 백분률 값이 표시된다.

## 대계열별 졸업자수 합계 데이터로 설정된 plotly 객체 생성
p_pie <- df_취업률_2000 |> group_by(대계열) |>
  summarise(졸업자수 = sum(졸업자수)) |> 
  plot_ly()

p_pie |>
  ## value와 labels를 매핑한 파이 trace 추가
  add_trace(type = 'pie', values = ~졸업자수, labels = ~대계열) |> 
  layout(title = list(text = '대학 계열별 취업률 분포'), 
         margin = margins)

textinfo

앞의 원 그래프에서 원 안에 표현된 데이터는 values에 매핑된 데이터의 백분율이 표시되었다. 이 데이터의 표시를 설정하는 속성이 textinfo이다. textinfo에서 설정사 가능한 값은 ‘label’, ‘text’, ‘value’, ’percent’의 네 가지이고 이 네가지를 +를 사용하여 동시에 사용할 수 있다. ’label’은 labels로 설정된 값, texttext로 설정된 값, ’value’는 values에 설정된 값, ’percent’는 백분률 값이 표시된다.

p_pie |>
  add_trace(type = 'pie', values = ~졸업자수, labels = ~대계열, 
            ## textinfo를 value로 설정
            textinfo = 'value') |> 
  layout(title = list(text = '대학 계열별 취업률 분포'), 
         margin = margins)
p_pie |>
  add_trace(type = 'pie', values = ~졸업자수, labels = ~대계열, 
            ## textinfo를 percent로 설정
            textinfo = 'percent') |> 
  layout(title = list(text = '대학 계열별 취업률 분포'), 
         margin = margins)
p_pie |>
  add_trace(type = 'pie', values = ~졸업자수, labels = ~대계열, 
            ## textinfo를 label+percent로 설정
            textinfo = 'label+percent') |> 
  layout(title = list(text = '대학 계열별 취업률 분포'), 
         margin = margins)
p_pie |>
  add_trace(type = 'pie', values = ~졸업자수, labels = ~대계열, 
            ## textinfo를 label+value로 설정
            textinfo = 'label+value') |> 
  layout(title = list(text = '대학 계열별 취업률 분포'), 
         margin = margins)

hole

hole은 원 그래프의 내부에 표시되는 구멍의 크기를 설정하는 속성이다. hole이 설정되지 않거나 0으로 설정되면 완전한 원 그래프로 표시되지만 0부터 1사이의 값이 설정되면 그 크기만큼 빈 원이 생성되면서 도넛 그래프로 전환된다.

p_pie |>
  add_trace(type = 'pie', values = ~졸업자수, labels = ~대계열, 
            textinfo = 'label+percent', 
            ## hole을 0.4로 설정
            hole = 0.4) |> 
  layout(title = list(text = '대학 계열별 취업률 분포'), 
         margin = margins)

댓글