Cách vẽ biểu đồ gói

Chương này này bao gồm hướng dẫn sử dụng code để vẽ:

  • Biểu đồ flow diagram bằng DiagrammeR và ngôn ngữ DOT
  • Biểu đồ Alluvial/Sankey
  • Chuỗi sự kiện theo thời gian

Đoạn code dưới đây hiển thị cách gọi các packages cần thiết cho các phân tích. Trong cuốn sách này, chúng tôi nhấn mạnh đến hàm p_load[] từ package pacman, cài đặt gói nếu cần và gọi nó ra để sử dụng. Bạn cũng có thể gọi các packages đã cài đặt với hàm library[] từ base R. Xem chương R Cơ bản để biết thêm thông tin về các package R.

pacman::p_load[ DiagrammeR, # for flow diagrams networkD3, # For alluvial/Sankey diagrams tidyverse] # data management and visualization

Hầu hết nội dung trong chương này không yêu cầu bộ dữ liệu. Tuy nhiên, trong phần sơ đồ Sankey, chúng ta sẽ sử dụng bộ dữ liệu linelist từ một vụ dịch Ebola mô phỏng. Để tiện theo dõi, hãy bấm để tải bộ dữ liệu linelist “đã làm sạch” ở đây [as .rds file]. Nhập dữ liệu bằng hàm import [] từ package rio [có thể xử lý nhiều loại tệp như .xlsx, .csv, .rds - xem chương Nhập xuất dữ liệu để biết chi tiết].

# import the linelist linelist % select[hospital, age_cat] %>% count[hospital, age_cat] %>% rename[source = hospital, target = age_cat]

Tập dữ liệu bây giờ trông như thế này:

Bây giờ chúng ta tạo một data frame cho tất cả các nút của sơ đồ, dưới cột name. Điều này bao gồm tất cả các giá trị cho cột hospital và cột age_cat. Lưu ý rằng chúng ta cần đảm bảo tất cả chúng đều có kiểu Ký tự trước khi kết hợp chúng và điều chỉnh cột ID thành dạng số thay vì dạng nhãn:

## name ## 1 Central Hospital ## 2 Military Hospital ## 3 Missing ## 4 Other ## 5 Port Hospital ## 6 St. Mark's Maternity Hospital [SMMH] ## 7 0-4 ## 8 5-9 ## 9 10-14 ## 10 15-19 ## 11 20-29 ## 12 30-49 ## 13 50-69 ## 14 70+

Chúng ta tiếp tục chỉnh sửa data frame có tên links mà chúng ta đã tạo ở trên với hàm count[]. Chúng ta thêm hai cột dạng số là cột IDsource và IDtarget để thực sự phản ánh/tạo liên kết giữa các nút. Các cột này sẽ giữ số thứ tự hàng [vị trí] của nút nguồn và nút đích. Số 1 sẽ bị trừ để các số vị trí này bắt đầu bằng 0 [không phải 1].

# match to numbers, not names links$IDsource % rename[source = age_cat, # re-name target = hospital] hosp_out_links % drop_na[age_cat] %>% select[hospital, outcome] %>% count[hospital, outcome] %>% rename[source = hospital, # re-name target = outcome] # combine links links

Chủ Đề