Hoạt ảnh cộng dồn

Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R

Adam Loy

Statistician, Carleton College

Biểu đồ chuỗi thời gian động về thu nhập bình quân đầu người của Bỉ.

Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R

Dữ liệu thu nhập của Bỉ

belgium <- world_indicators %>%
  filter(country == "Belgium")
belgium
# A tibble: 59 x 11
  country  year income   co2 military population  urban life_expectancy four_regions
  <chr>   <dbl>  <dbl> <dbl>    <dbl>      <dbl>  <dbl>           <dbl> <chr>       
1 Belgium  1960  12600  9.93     3.4     9170000 8.46e6            69.6 europe      
2 Belgium  1961  13100 10.1      3.26    9230000 8.50e6            70.5 europe      
3 Belgium  1962  13700 10.6      3.28    9280000 8.55e6            70.2 europe      
4 Belgium  1963  14100 11.3      3.22    9340000 8.62e6            70   europe      
5 Belgium  1964  15000 11        3.21    9390000 8.72e6            70.7 europe      
# … with 54 more rows, and 2 more variables: eight_regions <chr>, six_regions <chr>
Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R

Frame là gì?

# A tibble: 59 x 11
  country  year income   co2
  <chr>   <dbl>  <dbl> <dbl>
1 Belgium  1960  12600  9.93
2 Belgium  1961  13100 10.1 
3 Belgium  1962  13700 10.6 
4 Belgium  1963  14100 11.3 
5 Belgium  1964  15000 11   
6 Belgium  1965  15300 11.2 
# … with 53 more rows, and 7
#   more variables

frame = ~year có phù hợp không?

Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R

Frame là gì?

Mục tiêu Minh họa thông tin được giữ giữa các frame

frame = ~year Không có dữ liệu giữ lại nếu đặt frame = ~year.

Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R

Cộng dồn dữ liệu

Data frame đã cộng dồn cho năm 1960.

Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R

Cộng dồn dữ liệu

Data frame đã cộng dồn cho năm 1961.

Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R

Cộng dồn dữ liệu

Data frame đã cộng dồn đến năm 1962.

Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R

split()

library(dplyr)
library(purrr)

belgium %>% split(.$year)

Tách tập dữ liệu thành danh sách các data.frame theo biến year

Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R

accumulate()

library(dplyr)
library(purrr)
belgium %>%
  split(.$year) %>%
  accumulate(~bind_rows(.x, .y)) 

Hình ảnh cho thấy việc nối đệ quy các data.frame một hàng.

Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R

Đặt tên

library(dplyr)
library(purrr)
belgium %>%
  split(.$year) %>%
  accumulate(~bind_rows(.x, .y)) %>%
  set_names(1960:2018) 

Hình ảnh cho thấy việc nối đệ quy các data.frame một hàng.

Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R

Kết hợp

library(dplyr)
library(purrr)
belgium %>%
  split(.$year) %>%
  accumulate(~bind_rows(.x, .y)) %>%
  set_names(1960:2018) %>%
  bind_rows(.id = "frame")

Hình ảnh danh sách các data frame được nối theo hàng.

Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R
# A tibble: 1,770 x 12
   frame country  year income   co2 military population  urban life_expectancy
   <chr> <chr>   <dbl>  <dbl> <dbl>    <dbl>      <dbl>  <dbl>           <dbl>
 1 1960  Belgium  1960  12600  9.93     3.4     9170000 8.46e6            69.6
 2 1961  Belgium  1960  12600  9.93     3.4     9170000 8.46e6            69.6
 3 1961  Belgium  1961  13100 10.1      3.26    9230000 8.50e6            70.5
 4 1962  Belgium  1960  12600  9.93     3.4     9170000 8.46e6            69.6
 5 1962  Belgium  1961  13100 10.1      3.26    9230000 8.50e6            70.5
 6 1962  Belgium  1962  13700 10.6      3.28    9280000 8.55e6            70.2
 7 1963  Belgium  1960  12600  9.93     3.4     9170000 8.46e6            69.6
 8 1963  Belgium  1961  13100 10.1      3.26    9230000 8.50e6            70.5
 9 1963  Belgium  1962  13700 10.6      3.28    9280000 8.55e6            70.2
10 1963  Belgium  1963  14100 11.3      3.22    9340000 8.62e6            70  
# … with 1,760 more rows, and 3 more variables: four_regions <chr>,
#   eight_regions <chr>, six_regions <chr>
Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R

animate

library(dplyr)
library(purrr)
belgium %>%
  split(.$year) %>%
  accumulate(~bind_rows(.x, .y)) %>%
  set_names(1960:2018) %>%
  bind_rows(.id = "frame") %>%
  plot_ly(x = ~year, y = ~income) %>%
  add_lines(
    frame = ~frame, showlegend = FALSE
  )

Hoạt ảnh thu nhập bình quân đầu người của Bỉ theo thời gian.

Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R

Hãy thực hành!

Trực quan hóa dữ liệu tương tác nâng cao với plotly trong R

Preparing Video For Download...