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

plotly trace의 공통 속성(Attribute) - symbol, symbols

by 아참형인간 2022. 6. 12.
symbol.knit

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

trace의 공통 속성(Attribute) - symbol 관련 속성

symbol, symbols

symbol은 점의 형태를 설정하는 속성이다. 앞서 color와 같이 symbol도 매핑할 변수를 설정하는 속성이고 symbols는 변수 카테고리에 따라 설정하는 점의 형태를 설정하는 속성이다. color와 다른 점은 연속형 변수에 매핑되는 symbol은 단 하나의 카테고리로 분류된다는 점이다. 그렇기 때문에 좌표에 표시되는 점의 형태는 다르게 보이지만 범례에 구분되어 표현되지는 않는다는 점이다. 다음의 예를 살펴보자.

df_취업률_symbol <- df_취업률_2000 |> 
  ## 심볼 설정을 위한 열 생성
  mutate(symbol = case_when(
    대계열 == '인문계열' ~ 1, 
    대계열 == '사회계열' ~ 2,
    대계열 == '교육계열' ~ 3,
    대계열 == '자연계열' ~ 4,
    대계열 == '공학계열' ~ 5,
    대계열 == '의약계열' ~ 6,
    대계열 == '예체능계열' ~ 7)
    ) 
## 심볼 설정을 위한 열이 추가된 데이터프레임에서
df_취업률_symbol |> 
  plot_ly(x = ~졸업자수, y = ~취업자수, 
          ## symbol을 연속형 수치 변수에 매핑
          symbol = ~symbol) |>
  layout(title = '졸업자 대비 취업자수', margin = margins)
df_취업률_symbol |> 
  plot_ly(x = ~졸업자수, y = ~취업자수, 
          ## symbol을 팩터형 변수에 매핑
          symbol = ~factor(symbol)) |>
  layout(title = '졸업자 대비 취업자수', margin = margins)

앞의 예에서 ‘symbol’ 열은 대계열을 수치로 표현한 열로 수치형 열이다. 수치형 열이기 때문에 연속형 변수로 취급되고 이 열을 변수로 바로 사용하면 왼쪽과 같이 점의 모형은 달리지지만 하나의 trace(trace 0)로 표현된다. 반면 오른쪽과 같이 ‘symbol’ 열을 factor()를 사용하여 팩터로 전환하면 이산형 변수가 되기 때문에 각각의 카테고리를 trace로 구분하여 추가되기 때문에 색까지 구분해주며 범례에서 각각의 trace로 표현된다.

plotly에서는 0번부터 52번까지 총 53개의 symbol을 제공한다. 이 기본 53개의 도형 번호에 100을 더하면 내부가 빈 ’open’형 심볼, 200을 더하면 점이 찍힌 ’dot’형 심볼, 300을 더하면 내부가 비고 점이 찍힌 ’open-dot’형 심볼을 의미한다.

df_취업률_symbol |> 
  plot_ly(x = ~졸업자수, y = ~취업자수, 
          symbol = ~factor(symbol), 
          ## symbols를 심볼 이름으로 설정
          symbols = c('circle', 'circle-open', 'circle-dot', "circle-open-dot", 
                      "square", "square-open", "square-dot")) |>
  layout(title = '졸업자 대비 취업자수', margin = margins)

symbol에 변수를 매핑하지 않고 특정 심볼을 설정할 경우는 색의 설정과 같이 I()를 사용한다.

df_취업률_symbol |>
  ## symbol을 심볼 이름으로 설정
  plot_ly(x = ~졸업자수, y = ~취업자수, symbol = 'circle-open') |>
  layout(title = '졸업자 대비 취업자수', margin = margins)
df_취업률_symbol |> 
  ## symbol을 I()를 사용하여 심볼 이름으로 설정
  plot_ly(x = ~졸업자수, y = ~취업자수, symbol = I('circle-open')) |>
  layout(title = '졸업자 대비 취업자수', margin = margins)

댓글