Tác giả: Nguyễn Hải Trường | 2019-08-30
Trong bài viết này, RAnalytics
sẽ hướng dẫn các bạn cách vẽ biểu đồ động sử dụng package highcharter.
Chúng ta sẽ sử dụng dữ liệu gapminder
trong package gapminder.
# Dữ liệu
data(gapminder, package = "gapminder")
library(dplyr)
# Summary dữ liệu
gapminder %>% summary
## country continent year lifeExp
## Afghanistan: 12 Africa :624 Min. :1952 Min. :23.60
## Albania : 12 Americas:300 1st Qu.:1966 1st Qu.:48.20
## Algeria : 12 Asia :396 Median :1980 Median :60.71
## Angola : 12 Europe :360 Mean :1980 Mean :59.47
## Argentina : 12 Oceania : 24 3rd Qu.:1993 3rd Qu.:70.85
## Australia : 12 Max. :2007 Max. :82.60
## (Other) :1632
## pop gdpPercap
## Min. :6.001e+04 Min. : 241.2
## 1st Qu.:2.794e+06 1st Qu.: 1202.1
## Median :7.024e+06 Median : 3531.8
## Mean :2.960e+07 Mean : 7215.3
## 3rd Qu.:1.959e+07 3rd Qu.: 9325.5
## Max. :1.319e+09 Max. :113523.1
##
Giả sử, chúng ta muốn vẽ biểu đồ thể hiện trung bình GDP bình quân đầu người (gdpPercap
) của từng châu lục (continent
) theo từng các năm (year
).
# Tính toán GDP bình quân đầu người theo châu lục theo từng năm
data <- gapminder %>%
group_by(year, continent) %>%
summarise(gdp_per_cap = mean(gdpPercap) %>% round(0))
data %>% head(10)
## # A tibble: 10 x 3
## # Groups: year [2]
## year continent gdp_per_cap
## <int> <fct> <dbl>
## 1 1952 Africa 1253
## 2 1952 Americas 4079
## 3 1952 Asia 5195
## 4 1952 Europe 5661
## 5 1952 Oceania 10298
## 6 1957 Africa 1385
## 7 1957 Americas 4616
## 8 1957 Asia 5788
## 9 1957 Europe 6963
## 10 1957 Oceania 11599
# Biến đổi dữ liệu từ dạng dọc sang ngang
library(tidyr)
data_new <- data %>%
spread(continent, gdp_per_cap)
data_new %>% head(10)
## # A tibble: 10 x 6
## # Groups: year [10]
## year Africa Americas Asia Europe Oceania
## <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1952 1253 4079 5195 5661 10298
## 2 1957 1385 4616 5788 6963 11599
## 3 1962 1598 4902 5729 8365 12696
## 4 1967 2050 5668 5971 10144 14495
## 5 1972 2340 6491 8187 12480 16417
## 6 1977 2586 7352 7791 14284 17284
## 7 1982 2482 7507 7434 15618 18555
## 8 1987 2283 7793 7608 17214 20448
## 9 1992 2282 8045 8640 17062 20894
## 10 1997 2379 8889 9834 19077 24024
# Create interactive line chart
library(highcharter)
# Tạo biểu đồ
h <- highchart() %>%
# Thêm trục X (year)
hc_xAxis(categories = data_new$year) %>%
# Thêm các đường line (GDP bình quân của các châu lục)
hc_add_series(name = "Africa",
data = data_new$Africa
) %>%
hc_add_series(name = "Americas",
data = data_new$Americas
) %>%
hc_add_series(name = "Asia",
data = data_new$Asia
) %>%
hc_add_series(name = "Europe",
data = data_new$Europe
) %>%
hc_add_series(name = "Oceania",
data = data_new$Oceania
) %>%
hc_colors(c("darkgreen", "darkred", "steelblue", "gray", "orange"))
# Customize biểu đồ
h1 <- h %>%
# Add tên tiêu đề
hc_title(text = "Average of GDP per capital by Country",
margin = 20,
align = "left",
style = list(color = "black", fontWeight = "bold")
) %>%
# Add subtitle
hc_subtitle(text = "1952 to 2007",
align = "left") %>%
# Add caption
hc_credits(enabled = T, # add caption
text = "Gapminder Data",
href = "http://gapminder.com") %>%
# Add chú giải
hc_legend(align = "right",
verticalAlign = "top",
layout = "vertical",
x = 0,
y = 100
) %>%
# Add đường so sánh
hc_tooltip(crosshairs = TRUE,
backgroundColor = "#FCFFC5",
shared = TRUE,
borderWidth = 4)
Chúng ta thấy dù không có thêm giá trị GDP lên biểu đồ, nhưng nếu muốn xem giá trị GDP của từng châu lục theo các năm chúng ta cũng có thể xem được bằng cách di chuột đến vùng tương ứng - rất thuận tiện và trực quan.
Như vậy, chúng ta đã vừa được học cách vẽ biểu đồ động với highcharter. Chúc các bạn học tập và làm việc hiệu quả với Ranalytics.vn
!