加载 R 包
代码语言:txt复制library(tidyverse)
代码语言:txt复制# install.packages('wesanderson')
代码语言:txt复制library(wesanderson)
wesanderson 包里面提供了很多好看的调色板。
流图:geom_stream()
代码语言:txt复制# 安装
代码语言:txt复制# remotes::install_github("davidsjoberg/ggstream")
代码语言:txt复制library(ggstream)
代码语言:txt复制# 示例数据
代码语言:txt复制blockbusters
代码语言:txt复制#> # A tibble: 157 x 3
代码语言:txt复制#> year genre box_office
代码语言:txt复制#> <dbl> <chr> <dbl>
代码语言:txt复制#> 1 1977 Action 2.98
代码语言:txt复制#> 2 1977 Adventure 0.209
代码语言:txt复制#> 3 1977 Comedy 0.516
代码语言:txt复制#> 4 1977 Drama 2.54
代码语言:txt复制#> 5 1978 Action 1.92
代码语言:txt复制#> 6 1978 Adventure 0.760
代码语言:txt复制#> 7 1978 Comedy 1.04
代码语言:txt复制#> 8 1978 Drama 0.202
代码语言:txt复制#> 9 1979 Action 1.15
代码语言:txt复制#> 10 1979 Adventure 0.312
代码语言:txt复制#> # … with 147 more rows
代码语言:txt复制# 绘图示例
代码语言:txt复制ggplot(blockbusters, aes(year, box_office, fill = genre))
代码语言:txt复制 geom_stream()
代码语言:txt复制 scale_fill_manual(values = wes_palette("Darjeeling2"))
山岭图:geom_density_ridges()
代码语言:txt复制# 安装
代码语言:txt复制# install.packages("ggridges")
代码语言:txt复制library(ggridges)
代码语言:txt复制ggplot(blockbusters, aes(x = box_office, y = genre, fill = genre))
代码语言:txt复制 geom_density_ridges(scale = 4)
代码语言:txt复制 scale_fill_manual(values = wes_palette("Darjeeling2", n = 5))
桑基图:geom_sankey()
代码语言:txt复制# 安装
代码语言:txt复制# devtools::install_github("davidsjoberg/ggsankey")
代码语言:txt复制library(ggsankey)
代码语言:txt复制# 准备示例数据:
代码语言:txt复制mtcars %>%
代码语言:txt复制 as_tibble()
代码语言:txt复制#> # A tibble: 32 x 11
代码语言:txt复制#> mpg cyl disp hp drat wt qsec vs am gear carb
代码语言:txt复制#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
代码语言:txt复制#> 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
代码语言:txt复制#> 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
代码语言:txt复制#> 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
代码语言:txt复制#> 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
代码语言:txt复制#> 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
代码语言:txt复制#> 6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
代码语言:txt复制#> 7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4
代码语言:txt复制#> 8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2
代码语言:txt复制#> 9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2
代码语言:txt复制#> 10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4
代码语言:txt复制#> # … with 22 more rows
代码语言:txt复制mtcars %>%
代码语言:txt复制 make_long(cyl, vs, am, gear, carb) -> example_dat
代码语言:txt复制example_dat %>%
代码语言:txt复制 as_tibble()
代码语言:txt复制#> # A tibble: 160 x 4
代码语言:txt复制#> x node next_x next_node
代码语言:txt复制#> <fct> <dbl> <fct> <dbl>
代码语言:txt复制#> 1 cyl 6 vs 0
代码语言:txt复制#> 2 vs 0 am 1
代码语言:txt复制#> 3 am 1 gear 4
代码语言:txt复制#> 4 gear 4 carb 4
代码语言:txt复制#> 5 carb 4 <NA> NA
代码语言:txt复制#> 6 cyl 6 vs 0
代码语言:txt复制#> 7 vs 0 am 1
代码语言:txt复制#> 8 am 1 gear 4
代码语言:txt复制#> 9 gear 4 carb 4
代码语言:txt复制#> 10 carb 4 <NA> NA
代码语言:txt复制#> # … with 150 more rows
代码语言:txt复制ggplot(example_dat,
代码语言:txt复制 aes(x = x,
代码语言:txt复制 next_x = next_x,
代码语言:txt复制 node = node,
代码语言:txt复制 next_node = next_node,
代码语言:txt复制 fill = factor(node)))
代码语言:txt复制 geom_sankey(flow.alpha = 0.6)
另一个用来绘制冲积图的包是 ggalluvial 包:
代码语言:txt复制# 安装
代码语言:txt复制# install.packages("ggalluvial")
代码语言:txt复制library(ggalluvial)
代码语言:txt复制ggplot(as.data.frame(UCBAdmissions),
代码语言:txt复制 aes(y = Freq, axis1 = Gender, axis2 = Dept))
代码语言:txt复制 geom_alluvium(aes(fill = Admit), width = 1/12)
代码语言:txt复制 scale_fill_manual(values = wes_palette("Darjeeling2"))
凹凸图:geom_bump()
可以用于展示排名的变化。
代码语言:txt复制# 安装
代码语言:txt复制# devtools::install_github("davidsjoberg/ggbump")
代码语言:txt复制library(ggbump)
代码语言:txt复制blockbusters %>%
代码语言:txt复制 dplyr::filter(genre %in% c("Action", "Comedy", "Drama")) %>%
代码语言:txt复制 group_by(year) %>%
代码语言:txt复制 mutate(rank = rank(box_office)) -> blockbusters2
代码语言:txt复制ggplot(blockbusters2, aes(year, rank, color = genre))
代码语言:txt复制 geom_point(size = 7)
代码语言:txt复制 geom_bump()
代码语言:txt复制 scale_color_manual(values = wes_palette("Darjeeling2"))
华夫图:geom_waffle
代码语言:txt复制# 安装
代码语言:txt复制# install.packages("waffle", repos = "https://cinc.rud.is")
代码语言:txt复制library(waffle)
代码语言:txt复制ggplot(as_tibble(Titanic), aes(fill = Sex, values = n))
代码语言:txt复制 geom_waffle(n_rows = 20, color = "white")
代码语言:txt复制 facet_wrap(~ Survived, ncol = 1)
代码语言:txt复制 scale_fill_manual(values = wes_palette("Darjeeling2"))
蜂巢图:geom_quasirandom()
代码语言:txt复制# 安装
代码语言:txt复制# install.packages("ggbeeswarm")
代码语言:txt复制library(ggbeeswarm)
代码语言:txt复制ggplot(blockbusters, aes(x = genre, y = box_office, color = genre))
代码语言:txt复制 geom_quasirandom()
代码语言:txt复制 scale_color_manual(values = wes_palette("Darjeeling2"))
镶嵌图
代码语言:txt复制# 安装
代码语言:txt复制# devtools::install_github("haleyjeppson/ggmosaic")
代码语言:txt复制library(ggmosaic)
代码语言:txt复制ggplot(as.data.frame(UCBAdmissions))
代码语言:txt复制 geom_mosaic(aes(x = product(Admit, Dept), fill = Gender, weight = Freq))
代码语言:txt复制 scale_fill_manual(values = wes_palette("Darjeeling2"))
代码语言:txt复制 coord_flip()