Biểu đồ động với GGPLOT2 và PLOTLY

Tác giả: Hoàng Đức Anh | 2018-08-20

ggplot2 là package được sử dụng mặc định trong các vấn đề về trực quan hóa dữ liệu với R. Tuy nhiên, ggplot2 chỉ cho phép xây dựng các biểu đồ tĩnh (static plot) mà chưa hỗ trợ các biểu đồ có thể tương tác được với các lựa chọn như hover hay zoom. Hiện nay, có rất nhiều package trên R hỗ trợ biểu đồ tương tác như rCharts, Highcharter hay rbokeh.

Trong bài viết này, RAnalytics sẽ hướng dẫn các bạn tạo xây dựng biểu đồ tương tác được với plotly mà không cần phải học các cú pháp từ các package được đề cập phía trên. Biểu đồ được tạo sẽ giữ nguyên cú pháp của ggplot2.


Cài đặt plotly

Để vẽ biểu đồ, trước hết ta cần cài đặt package plotyly

#install.packages("plotly")
library(dplyr)
library(ggplot2)
library(plotly)
theme_set(theme_bw())

Vẽ biểu đồ với ggplot2

Ta có thể tạo bất kỳ biểu đồ nào trên ggplot2 và lưu lại thành một object.

p <- iris %>% 
  ggplot(aes(Species, Sepal.Length)) +
  geom_boxplot(aes(fill = Species)) +
  labs(title = "Interactive plot")
p

Tạo biểu đồ động với plotly

Sau khi đã tạo xong biểu đồ và lưu dưới dạng đối tượng (một object), ta có thể xây dựng biểu đồ động với plotly bằng cách rất đơn giản như sau.

ggplotly(p)

Với biểu đồ này, ta có thể phóng to, thu nhỏ và rê chuột (hover) vào từng vị trí trên biểu đồ.

Ta có thể xem thêm một số ví dụ sau

Biểu đồ mật độ

p1 <- iris %>% 
  ggplot(aes(Sepal.Length)) +
  geom_density(aes(fill = Species), alpha = 0.7) +
  labs(title = "Interactive density chart")
p1

ggplotly(p1)

Biểu đồ dây

# Tạo dataframe
df <- data.frame(x = seq(1, 10, by = 0.1)) %>% 
  mutate(y = 0.3*x + sin(x) + rnorm(91, 0, 1))  

# Tạo biểu đồ với ggplot2
p3 <- df %>% 
  ggplot(aes(x, y)) +
  geom_line(col = "darkgrey", size = 0.6) +
  geom_point(col = "darkblue", alpha = 0.8)

# Tạo biểu đồ với ggplotly
ggplotly(p3)

 


Biểu đồ điểm và facet

Với phiên bản mới nhất của plotly, việc sử dụng facet trong ggplotly đã tốt hơn rất nhiều so với các phiên bản trước và thể hiện gần như tương đồng so với các lựa chọn về facet trong ggplot2.

p2 <- iris %>% 
  ggplot(aes(Sepal.Length, Petal.Length)) +
  geom_point(aes(col = Species)) +
  theme_bw() +
  labs(title = "Interactive scatter plot") +
  facet_wrap(~Species)
ggplotly(p2)

 


Như vậy, chúng ta đã vừa thực hiện xong cách thức tạo các biểu đồ tương tác được với ggplot2plotly. Với plotly, các bạn sẽ không nhất thiết phải học các package mới mà hoàn toàn có thể sử dụng các câu lệnh quen thuộc với ggplot2. Chúc các bạn học tập và làm việc hiệu quả với Ranalytics.vn!

comments powered by Disqus