마우스 움직임에 반응해 실시간으로 형태가 변하는 인터렉티브 그래프를 만드는 방법을 알아봅시다.
인터렉티브 그래프란, 마우스 움직임에 반응하여 실시간으로 형태가 변하는 그래프를 말합니다. 인터렉티브 그래프를 만들면 그래프를 자유롭게 조작하면서 관심 있는 부분을 자세히 살펴볼 수 있습니다. 그래프를 HTML 포맷으로 저장하면, 일반 사용자들도 웹 브라우저를 이용해 그래프를 조작할 수 있습니다.
install.packages("plotly")
library(plotly)
library(ggplot2)
p <- ggplot(data = mpg, aes(x = displ, y = hwy, col = drv)) + geom_point()
print(p)
plot_ly(data = mpg, x = ~displ, y = ~hwy, color = ~drv, type = 'scatter', mode = 'markers')
마우스를 드래그하면 특정 영역을 확대할 수 있습니다. 그래프 위에서 더블클릭하면 다시 원래대로 되돌아옵니다.
뷰어 창에서 [Export -> Save as Web Page…]를 클릭하면 인터렉티브 그래프를 HTML 포맷으로 저장할 수 있습니다. HTML 파일은 웹 브라우저에서 열어볼 수 있기 때문에 R을 사용하지 않는 사용자들도 그래프를 볼 수 있습니다.
# cut과 clarity 조합별 빈도 계산
diamonds_summary <- diamonds %>%
count(cut, clarity)
# 인터랙티브 막대 그래프 생성
plot_ly(data = diamonds_summary,
x = ~cut,
y = ~n,
color = ~clarity,
type = 'bar') %>%
layout(title = "다이아몬드 Cut별 Clarity 분포",
xaxis = list(title = "Cut"),
yaxis = list(title = "빈도"))
economics <- ggplot2::economics
head(economics)
## # A tibble: 6 × 6
## date pce pop psavert uempmed unemploy
## <date> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1967-07-01 507. 198712 12.6 4.5 2944
## 2 1967-08-01 510. 198911 12.6 4.7 2945
## 3 1967-09-01 516. 199113 11.9 4.6 2958
## 4 1967-10-01 512. 199311 12.9 4.9 3143
## 5 1967-11-01 517. 199498 12.8 4.7 3066
## 6 1967-12-01 525. 199657 11.8 4.8 3018
plot_ly(economics, x = ~date, y = ~unemploy, type = 'scatter', mode = 'lines',
line = list(color = 'blue')) %>%
layout(title = "실업자수 변화",
xaxis = list(title = "날짜"),
yaxis = list(title = "명"))
# 인터랙티브 시계열 그래프 생성
plot_ly(economics, x = ~date) %>%
add_lines(y = ~unemploy/1000, name = '실업률', line = list(color = 'blue')) %>%
add_lines(y = ~psavert, name = '저축률', line = list(color = 'red')) %>%
layout(title = "두 시계열 데이터 비교",
xaxis = list(title = "날짜"),
yaxis = list(title = "값"),
legend = list(x = 0.5, y = 0.9))