trace의 공통 속성(Attribute)
사용데이터 : https://2stndard.tistory.com/68
plotly
객체에서 가장 중요한 것은 trace의 종류이다.
plot_ly()
만을 사용하여 그래프를 완성할 때 trace의 종류를
생략하면 plotly
에서 데이터를 파악하여 가장 좋은 trace를
설정해준다.
trace는 ggplot2
에서 geom_*()
을 사용하여
데이터를 표현하는 기하 요소를 결정하는 것과 유사한 개념으로 생각하면
쉬울 것이다.
ggplot2
에서는 그리고자하는 시각화의 형태에 따라 사용하는
함수가 다르지만 plotly
에서는 하나의 함수로 사용할 수도,
시각화의 종류에 따른 함수를 사용할 수도 있다. 따라서 plotly
사용하여 시각화를 만들때는 trace type부터 결정하고 해당 trace의 세부
속성들을 설정해 가면서 만들게 된다. 앞의 포스팅에서 본 것과 같이
plot_ly()
를 사용하여도 시각화를 완성할 수 있지만 보다
상세하고 섬세한 시각화를 만들기 위해서는 plot_ly()
로
plotly
객체를 위한 스키마를 초기화하고 이 객체에
add_trace()
나 add_*()
를 사용하여 trace를
추가함으로써 만든다.
plotly
의 trace에 따라 매우 많은 속성들이 있다. 이
포스팅에서는 대부분의 trace 설정에 공통적으로 사용되는 주요 속성에 대해
설명한다.
x, y, z
trace 설정에서 가장 기본적으로 설정하 는 속성은 x
,
y
, z
이다. 이 세 개의 속성은 X축, Y축, Z축에
매핑하는 변수를 설정한다. 앞서 설명한 바와 같이 x
,
y
, z
에 매핑하는 변수는 ~
를
사용하여 매핑하는데 변수를 매핑하지 않고 벡터를 설정하는 것도
가능하다.
## df_취업률_2000에서
df_취업률_2000 |>
## X축은 졸업자수, Y축은 취업자수로 매핑한 plotly 객체 생성
plot_ly(x = ~졸업자수, y = ~취업자수) |>
## 제목과 여백 설정
layout(title = '졸업자 대비 취업자수', margin = margins)
plotly
는 3차원 그래픽을 지원하기 때문에 Z축을 설정할 수
있다. 동적 시각화는 사용자가 시각화를 자신이 원하는 방향으로 설정하여
관찰할 수 있기 때문에 3차원 효과가 효율적일 수 있다. 하지만 일반적으로
데이터 시각화에서는 3차원 을 사용하는 것은 크게 효과적이지 않다고 알려져
있기 때문에 3차원의 활용은 주의할 필요가 있다.
df_취업률_2000 |>
## X축은 졸업자수, Y축은 취업자수, Z축은 대계열로 매핑된 plotly 객체 생성
plot_ly(x = ~졸업자수, y = ~취업자수, z = ~대계열)
name
name
은 plotly
에서 추가되는 각각의 trace에
대한 이름을 설정한다. 이 이름은 범례 아이템과 마우스 포인터가 데이터
점에 위치할때 나타나는 호버(Hover)에 표기되는 이름이 된다.
다음은 name
에 범례에 표기되어야 할 변수를 매핑하여 범례
아이템 이름을 설정하는 코드이다.
df_취업률_2000 |>
## X축은 졸업자수, Y축은 취업자수, name은 대계열로 매핑한 plotly 객체 생성
plot_ly(x = ~졸업자수, y = ~취업자수, name = ~대계열) |>
layout(title = '졸업자 대비 취업자수', margin = margins)
만약 범례를 사용자가 원하는 형태로 바꾸려면 범례 아이템을 바꾸는
방법으로 할 수 없고 각각의 개별 데이터에 매핑될 벡터나 열을 만들어
주어야 한다. ggplot2
와 같은 정적 시각화는 시각화가
만들어지면 사용자의 활동에 따라 반응이 없지만 동적 시각화는 마우스
포인터를 데이터에 가져가면 해당 데이터에 대한 내용이 표기되어야 한다. 이
값이 범례값과 달라지면 안되기 때문에 범례만 수정할 수 없고 모든 데이터에
1:1로 매핑되는 범례 아이템 이름 벡터가 필요하다.
## 범례로 사용할 문자열 벡터 생성
legend_items <- df_covid19_100 |>
mutate(legend_name = case_when(
iso_code == 'KOR' ~ '한국',
iso_code == 'OWID_ASI' ~ '아시아지역',
iso_code == 'OWID_EUR' ~ '유럽지역',
iso_code == 'OWID_NAM' ~ '북미지역',
iso_code == 'OWID_OCE' ~ '오세아니아지역',
iso_code == 'OWID_SAM' ~ '남미지역',
iso_code == 'OWID_AFR' ~ '아프리카지역')) |>
select(legend_name) |>
pull()
## 범례 순서 설정을 위한 팩터 설정
legend_items <- fct_relevel(legend_items, '한국', '아시아지역', '유럽지역', '북미지역', '남미지역', '오세아니아지역', '아프리카지역')
df_covid19_100 |>
## X축을 date, Y축을 new_cases, 범례 이름을 앞서 생성한 문자열 벡터로 매핑
plot_ly(x = ~date, y = ~new_cases, name = ~legend_items) |>
layout(title = '최근 100일간 코로나19 확진자수',
## X축 이름을 제거
xaxis = list(title = list(text = '')),
## Y축 이름을 설정
yaxis = list(title = list(text = '확진자수')),
## 여백 설정
margin = margins)
'Plotly in R - 그래프에 마우스를 올려봅시다' 카테고리의 다른 글
plotly trace의 공통 속성(Attribute) - hovertext, hoverinfo, hovermode, hovertemplete (0) | 2022.04.18 |
---|---|
plotly trace의 공통 속성(Attribute) - text, textposition, texttemplate, textfont (0) | 2022.04.17 |
plot_ly() (0) | 2022.04.16 |
plotly 예제 데이터 (0) | 2022.04.16 |
ggplotly (0) | 2022.04.16 |
댓글