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

plotly trace의 공통 속성(Attribute) - color, colors

by 아참형인간 2022. 4. 20.
color.knit

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

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

color, colors

color는 스캐터 trace에 표현되는 점, 선, 문자의 내부 색을 설정하는 속성이다. 내부 색을 설정할 때는 먼저 색을 변수에 매핑할지, 특정 색상으로 설정할 지를 결정해야 한다. 이를 설정하는 매개변수가 color이다. color에 변수를 ~를 사용하여 매핑하면 해당 변수의 값에 따라 색이 매핑되어 표현된다.

df_취업률_2000 |> 
  ## X, Y축의 매핑과 color를 대계열로 매핑
  plot_ly(x = ~졸업자수, y = ~취업자수, color = ~대계열) |>
  layout(title = '졸업자 대비 취업자수', margin = margins)

반면 특정한 색으로 설정할 때는 color에 특정 색 이름을 설정하면 모든 marker가 동일한 색으로 나타난다. 이 과정에서 하나 주의해야 할 것이 설정의 방법이다. 일반적인 변수 설정과 같이 색상명을 설정하면 다음과 같이 정확한 색상이 나타나지 않는다.

df_취업률_2000 |> 
  ## plot_ly()에 color를 색 이름 설정
  plot_ly(x = ~졸업자수, y = ~취업자수, color = 'darkblue') |>
  layout(title = '졸업자 대비 취업자수', margin = margins)

plotly에서 색의 사용은 기본적으로 매핑을 전제로 사용된다. 따라서 앞의 코드에서 color = 'black'으로 설정하는 것은 색을 검정색으로 지정하는 것이 아니고 ‘black’이라는 이름으로 매핑된 색 배열을 불러온다는 의미이다. 하지만 미리 매핑되어 정의된 ’black’ 색 배열이 없기 때문에 plotly의 디폴트 색 팔레트를 사용하여 색이 설정된다. 자신이 원하는 색을 직접 설정하기 위해서는 ’asis’를 의미하는 I()를 사용하여 색을 설정하여야 한다.

df_취업률_2000 |> 
  ## plot_ly()에 color를 I()사용하여 색 이름 설정
  plot_ly(x = ~졸업자수, y = ~취업자수, color = I('darkblue')) |>
  layout(title = '졸업자 대비 취업자수', margin = margins)

colorscolor에서 매핑된 변수에 따른 색의 스케일을 설정하는 속성이다. plotly에서 색의 스케일을 설정할 때 다음의 세 가지 방법 중 하나를 사용한다.

첫 번째 방법은 RColorBrewer 패키지에서 제공하는 팔레트의 이름을 설정하는 방법이다. RColorBrewer 패키지는 R에서 색 ekdma팔레트를 제공하는 패키지 중 가장 대중적으로 사용되는 패키지로 ggplot2에서도 많이 사용된다. 이 패키지에서 제공하는 팔레트의 이름을 colors에 지정함으로써 해당 팔레트를 사용할 수 있다.

두 번째 방법은 사용할 색을 직접 지정하는 방법이다. 사용할 색의 이름을 가지는 문자열 벡터를 사용하여 직접 색을 지정한다.

세 번째는 colorRamp()scales::colour_ramp()와 같은 색 보간 함수를 사용하는 방법이다. colorRamp()는 매개변수로 전달되는 색 벡터의 사이 색을 반환하는 함수를 만들어주는데 0부터 1까지의 값 범위내에 해당하는 색을 반환해준다.

다음은 RColorBrewer 패키지의 팔레트 이름을 사용한 색 설정 방법이다.

df_취업률_2000 |> 
  plot_ly(x = ~졸업자수, y = ~취업자수,
          ## color를 대계열로 매핑하고 colors를 'Accent' 팔레트로 설정
          color = ~대계열, colors = 'Blues') |>
  layout(title = '졸업자 대비 취업자수', margin = margins)

다음은 색상 이름을 벡터로 설정하여 사용한 색 설정 방법이다.

color_vector <- c('red', 'blue', 'green', 'yellow', 'purple', 'black', 'pink')

df_취업률_2000 |> 
  plot_ly(x = ~졸업자수, y = ~취업자수, 
          ## color를 대계열로 매핑하고 colors를 색 이름 벡터로 설정
          color = ~대계열, colors = color_vector) |>
  layout(title = '졸업자 대비 취업자수', margin = margins)

다음은 colorRamp()를 사용한 색 설정 방법이다.

df_취업률_2000 |> 
  plot_ly(x = ~졸업자수, y = ~취업자수, 
          ## color를 대계열로 매핑하고 colors를 colorRamp()로 설정
          color = ~대계열, colors = colorRamp(c('red', 'yellow', 'blue'))) |>
  layout(title = '졸업자 대비 취업자수', margin = margins)

댓글