美文网首页
ggplot | 数据分布可视化

ggplot | 数据分布可视化

作者: 生命数据科学 | 来源:发表于2023-01-01 19:05 被阅读0次

在生物信息数据分析中,了解每个样本的数据分布对于选择分析流程和分析方法是很有帮助的,而如何更加直观、有效地画出数据分布图,是值得思考的问题

1. 所需要的包

library(ggdist)
library(tidyquant)
library(tidyverse)
library(ggsci)

2. 常规作图

比较常见的数据分布图绘制主要为箱线图和小提琴图

1.1 示例数据

示例数据为ggplot2包自带数据,用到的是分类变量cyl,连续变量``

> head(mpg)
# A tibble: 6 × 11
  manufacturer model displ  year   cyl trans      drv     cty   hwy fl    class  
  <chr>        <chr> <dbl> <int> <int> <chr>      <chr> <int> <int> <chr> <chr>  
1 audi         a4      1.8  1999     4 auto(l5)   f        18    29 p     compact
2 audi         a4      1.8  1999     4 manual(m5) f        21    29 p     compact
3 audi         a4      2    2008     4 manual(m6) f        20    31 p     compact
4 audi         a4      2    2008     4 auto(av)   f        21    30 p     compact
5 audi         a4      2.8  1999     6 auto(l5)   f        16    26 p     compact
6 audi         a4      2.8  1999     6 manual(m5) f        18    26 p     compact

1.2 箱线图

最简单的就是箱线图了,能够绘制出数据的离群值、四分位数和四分位间距

# 箱线图
library(ggplot2)
library(ggsci)

p = ggplot(mpg, aes(x=factor(cyl), y=cty,fill=factor(cyl))) + 
  geom_boxplot()+
  scale_fill_lancet()
p
# 依旧运用了ggsci包来填充颜色
image

1.3 小提琴图

小提琴图相比于箱线图,能够多展示一个信息,数据密度

# 同样的数据
# 小提琴图
library(ggplot2)
library(ggsci)

p = ggplot(mpg, aes(x=factor(cyl), y=cty,fill=factor(cyl))) + 
  geom_violin()+
  scale_fill_lancet()
p
# 依旧运用了ggsci包来填充颜色
image

3. 云雨图

先看最终效果图吧~


image

图主要由3部分组成:

  1. 箱线图

3.1 先画云

mpg %>%
  filter(cyl %in% c(4,6,8)) %>%
  ggplot(aes(x = factor(cyl), y = cty, fill = factor(cyl),color = factor(cyl))) +
  # add half-violin from {ggdist} package
  ggdist::stat_halfeye(
    ## custom bandwidth
    adjust = 0.5,
    ## move geom to the right
    justification = -.2,
    ## remove slab interval
    .width = 0,
    point_colour = NA
  ) 
image

3.2 云+箱线图

mpg %>%
  filter(cyl %in% c(4,6,8)) %>%
  ggplot(aes(x = factor(cyl), y = cty, fill = factor(cyl),color = factor(cyl))) +
  # add half-violin from {ggdist} package
  ggdist::stat_halfeye(
    ## custom bandwidth
    adjust = 0.5,
    ## move geom to the right
    justification = -.2,
    ## remove slab interval
    .width = 0,
    point_colour = NA
  ) +
  geom_boxplot(
    width = .15,
    ## remove outliers
    outlier.color = NA,
    alpha = 0.5
  ) 
image

3.3 云+雨+箱线图

mpg %>%
  filter(cyl %in% c(4,6,8)) %>%
  ggplot(aes(x = factor(cyl), y = cty, fill = factor(cyl),color = factor(cyl))) +
  # add half-violin from {ggdist} package
  ggdist::stat_halfeye(
    ## custom bandwidth
    adjust = 0.5,
    ## move geom to the right
    justification = -.2,
    ## remove slab interval
    .width = 0,
    point_colour = NA
  ) +
  geom_boxplot(
    width = .15,
    ## remove outliers
    outlier.color = NA,
    alpha = 0.5
  ) +
  # Add dot plots from {ggdist} package
  ggdist::stat_dots(
    ## orientation to the left
    side = "left",
    ## move geom to the left
    justification = 1.1,
    ## adjust grouping (binning) of observations
    binwidth = .25
  ) 
image

3.4 方向不太对,颠倒一下

mpg %>%
  filter(cyl %in% c(4,6,8)) %>%
  ggplot(aes(x = factor(cyl), y = cty, fill = factor(cyl),color = factor(cyl))) +
  # add half-violin from {ggdist} package
  ggdist::stat_halfeye(
    ## custom bandwidth
    adjust = 0.5,
    ## move geom to the right
    justification = -.2,
    ## remove slab interval
    .width = 0,
    point_colour = NA
  ) +
  geom_boxplot(
    width = .15,
    ## remove outliers
    outlier.color = NA,
    alpha = 0.5
  ) +
  # Add dot plots from {ggdist} package
  ggdist::stat_dots(
    ## orientation to the left
    side = "left",
    ## move geom to the left
    justification = 1.1,
    ## adjust grouping (binning) of observations
    binwidth = .25
  ) +coord_flip()
image

3.5 给它点颜色看看

mpg %>%
  filter(cyl %in% c(4,6,8)) %>%
  ggplot(aes(x = factor(cyl), y = cty, fill = factor(cyl),color = factor(cyl))) +
  # add half-violin from {ggdist} package
  ggdist::stat_halfeye(
    ## custom bandwidth
    adjust = 0.5,
    ## move geom to the right
    justification = -.2,
    ## remove slab interval
    .width = 0,
    point_colour = NA
  ) +
  geom_boxplot(
    width = .15,
    ## remove outliers
    outlier.color = NA,
    alpha = 0.5
  ) +
  # Add dot plots from {ggdist} package
  ggdist::stat_dots(
    ## orientation to the left
    side = "left",
    ## move geom to the left
    justification = 1.1,
    ## adjust grouping (binning) of observations
    binwidth = .25
  ) +coord_flip()+
  # Adjust theme
  scale_fill_lancet() +
  scale_color_lancet()
image

3.6 去掉背景

mpg %>%
  filter(cyl %in% c(4,6,8)) %>%
  ggplot(aes(x = factor(cyl), y = cty, fill = factor(cyl),color = factor(cyl))) +
  # add half-violin from {ggdist} package
  ggdist::stat_halfeye(
    ## custom bandwidth
    adjust = 0.5,
    ## move geom to the right
    justification = -.2,
    ## remove slab interval
    .width = 0,
    point_colour = NA
  ) +
  geom_boxplot(
    width = .15,
    ## remove outliers
    outlier.color = NA,
    alpha = 0.5
  ) +
  # Add dot plots from {ggdist} package
  ggdist::stat_dots(
    ## orientation to the left
    side = "left",
    ## move geom to the left
    justification = 1.1,
    ## adjust grouping (binning) of observations
    binwidth = .25
  ) +coord_flip()+
  # Adjust theme
  scale_fill_lancet() +
  scale_color_lancet()+
  theme_bw()+
  theme_classic()
image

3.7 可以再改改标题

 p <- mpg %>%
  filter(cyl %in% c(4,6,8)) %>%
  ggplot(aes(x = factor(cyl), y = cty, fill = factor(cyl),color = factor(cyl))) +
  # add half-violin from {ggdist} package
  ggdist::stat_halfeye(
    ## custom bandwidth
    adjust = 0.5,
    ## move geom to the right
    justification = -.2,
    ## remove slab interval
    .width = 0,
    point_colour = NA
  ) +
  geom_boxplot(
    width = .15,
    ## remove outliers
    outlier.color = NA,
    alpha = 0.5
  ) +
  # Add dot plots from {ggdist} package
  ggdist::stat_dots(
    ## orientation to the left
    side = "left",
    ## move geom to the left
    justification = 1.1,
    ## adjust grouping (binning) of observations
    binwidth = .25
  ) +
  # Adjust theme
  scale_fill_lancet() +
  scale_color_lancet()+
  theme_bw()+
  theme_classic()+
  labs(title = "Raincloud_plot",
       x="cyl",
       fill="cyl_Type",color="cyl_Type")+
  coord_flip()
p
image

基本上就大功告成啦,最后可以保存一下

ggsave(p,filename = "raincloud_plot.jpg",height = 4,width = 5)

4. 小结

宝剑锋从磨砺出,梅花香自苦寒来

画图其实就是这样,简单的图3句话就能写完,而要做得完美又好看,总是需要更大的高质量
为什么我画图如此迅速呢?

因为我有ggplot2的小抄~

image
基本上所有常见的图形对应的语法都有了,遇到各种图形需求也能游刃有余

感谢观看,如果有用还请点赞,关注,在看,转发!

相关文章

  • R for data science (第一章) ②

    使用ggplot2进行数据可视化①使用ggplot2进行数据可视化② 添加其他变量的一种方法是aesthetics...

  • 2020-05-27

    数据可视化以下R包用于数据可视化: ggplot2及其扩展:ggplot2包提供了一个强大的绘图系统,并实现了以下...

  • 2018-07-23 R for data science之使用

    查看mpg数据结构 简单可视化 ggplot2画图结构 Exercises Run ggplot(data = m...

  • ggplot2优雅的绘制华夫图

    R包安装与加载 数据清洗 数据可视化 ggplot2版华夫图

  • Seaborn简介

    Seaborn 数据集分布可视化 类别数据可视化 类别散布图 类别内数据分布 类别内统计图

  • DAY 7 R

    ggplot2 part_1 可视化使得数据科学从业者更好地分析并解释数据常用的ggplot 模版 按照之前的学习...

  • 2021-04-24 R数据科学练习题(第一章)

    第一章 使用ggplot2进行数据可视化 练习 (1)运行ggplot(data = mpg),你会看到什么? (...

  • R 数据可视化(一)

    R 数据可视化 —— ggplot 基础介绍 前言 讲完数据处理,就要开始将数据可视化了。 在这一部分,我们主要的...

  • ggplot2基础画图-密度图

    密度图也是比较常用的一种数据分布可视化的方法。今天小编分享一下用ggplot2绘制密度图的方法,代码很简单,但省去...

  • R for data Science(二)

    ggplot2数据可视化 这次我们接着上面的继续讲解数据可视化,数据集是mpg数据集 那我们怎么做出上面的这些图呢...

网友评论

      本文标题:ggplot | 数据分布可视化

      本文链接:https://www.haomeiwen.com/subject/kdrxcdtx.html