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

plotly 제목 설정 in R

by 아참형인간 2022. 11. 20.
title.knit

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

plotly layout 설정

title : 제목 설정

plotly의 제목을 설정하는 type은 ’title’이다. ’title’의 세부 type은 다음과 같다. 앞서 설명한 바와 같이 ’title’은 다른 속성과 조금 다른 부분이 있다. 원칙적으로 ’title’은 상위 속성으로 세부 속성들의 list로 구성해야 한다. 하지만 ’title’에 바로 문자열을 설정하면 그 자체가 속성으로 사용되어 제목을 설정하는 속성이 된다.

’title’에서 사용하는 주요 하위 속성은 다음과 같다.

속성 속성 설명 속성값
title font color 제목 글자 색상 설정 문자열
family 제목 글자 HTML 폰트 설정 폰트명
size 제목 글자 크기 설정 1이상의 수치
pad b 제목의 아래 패딩 여백 설정 수치
l 제목의 왼쪽 패딩 여백 설정 수치
r 제목의 오른쪽 패딩 여백 설정 수치
t 제목의 윗쪽 패딩 여백 설정 수치
text 제목의 텍스트 설정, 제목의 텍스트는 'title' 자체 속성으로도 설정 가능 문자열
x xref'로부터의 x축 위치 설정 0부터 1사이의 수치
xanchor 제목의 수평 정렬 설정 "auto" | "left" | "center" | "right"
xref x축의 위치 설정 기준. Container는 plot의 전체, Paper는 플로팅 영역 "container" | "paper"
y xref'로부터의 y축 위치 설정 0부터 1사이의 수치
yanchor 제목의 수직 정렬 설정 "auto" | "top" | "middle" | "bottom"
xref y축의 위치 설정 기준. Container는 plot의 전체, Paper는 플로팅 영역 "container" | "paper"

plotly에서는 제목과 같은 문자열을 꾸미기 위해 HTML 텍스트 태그를 지원하는데 전체 HTML 중 5가지만을 지원한다.

HTML tab 설명
<b></b> 볼드체 설정
<i></i> 이탤릭체 설정
<br> 줄 바꿈 설정
<sup></sup> 윗 첨자 설정
<sub></sub> 아래 첨자 설정
<a href='url'></a> 하이퍼링크 설정

R에서는 add_trace()로 트레이스를 추가한 후 layout()을 사용하여 ’layout’의 세부 속성을 설정할 수 있다. 하나 주의해야 할 것은 add_trace()로 트레이스를 추가해 만든 plotly 객체를 대상으로 layout()을 실행해야 한다는 것이다.

R_layout_scatter <- df_취업률_2000 |> 
  filter(졸업자수 < 500) |> 
  plot_ly() |>
  add_trace(type = 'scatter', mode = 'markers', 
            x = ~졸업자수, y = ~취업자수)

R_layout_scatter <- R_layout_scatter |> 
  layout(title = list(text = '<b>졸업자 대비 취업자수</b>', 
                      x = 0.5, xanchor = 'center', yanchor = 'top')
         )

R_layout_scatter

plotly가 HTML 텍스트 tag를 일부만 지원함으로써 문자열 스타일링에 한계가 있을듯 하지만 ’’을 사용하는 HTML inline 속성을 지원하기 때문에 CSS의 스타일을 사용하여 문자열의 세부 설정이 가능하다. 다음은 HTML의 inline 속성을 사용하여 제목을 설정하는 코드이다.

R_layout_scatter |> layout(title = list(text = "<span style = 'font-size:15pt'><span style = 'color:red;font-weight:bold;'> 졸업자</span><span style = 'font-size:10pt'> 대비</span> <span style = 'color:blue;font-weight:bold;'>취업률</span></span>", 
                               x = 0.5, xanchor = 'center', yanchor = 'top')
                    )

댓글