前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot2 图层

ggplot2 图层

原创
作者头像
大发明家
发布2021-12-06 14:06:28
7710
发布2021-12-06 14:06:28
举报
文章被收录于专栏:技术博客文章

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 加载 R 包
  • 流图:geom_stream()
  • 山岭图:geom_density_ridges()
  • 桑基图:geom_sankey()
  • 凹凸图:geom_bump()
  • 华夫图:geom_waffle
  • 蜂巢图:geom_quasirandom()
  • 镶嵌图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档