ggplot2 图层

2021-12-06 14:06:28 浏览数 (1)

加载 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()

0 人点赞