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

ggplot_Violin Plot & dot plot

作者头像
火星娃统计
发布2020-09-15 15:41:18
1.5K0
发布2020-09-15 15:41:18
举报
文章被收录于专栏:火星娃统计

ggplot_Violin Plot & dot plot

sunqi
2020/8/2

概述

小提琴图用于可视化数据的分布及其概率密度。它是箱式图和密度图的组合,密度图通过旋转放置在箱式图侧边,以显示数据的分布形状。小提琴图比箱形图显示更多的信息。主要是数据的分布,可以看出是双峰的还是多峰的

主要函数和参数

geom_violin()主函数

color, size, linetype:线条的颜色大小和线的类型

fill:填充颜色

trim:是否修剪小提琴尾部

stat_summary():添加描述信息

代码

代码语言:javascript
复制
rm(list = ls())
# 获取示例数据
get_data <- function() {
  data("ToothGrowth")
  ToothGrowth$dose <- as.factor(ToothGrowth$dose)
  return(ToothGrowth)
}


# 数据集
# @len 目标变量, 为连续变量
# @ dose 分组变量,需要转换为因子
# @ supp 分组变量,需要转换为因子
ToothGrowth <- get_data()

# 需要的包

library(ggplot2)
library(patchwork)
library(tidyverse)
# 绘图
# 基本绘图参数设置
p <- ToothGrowth %>%  ggplot(aes(x = dose, y = len))

# 添加小提琴图并添加统计均值和标准差
p1 <- p + geom_violin(trim = FALSE) +
  stat_summary(
    fun.data = "mean_sdl",
    fun.args = list(mult = 1),
    geom = "pointrange",
    color = "black"
  )

# 添加分组颜色、箱式图
p2 <- p + geom_violin(aes(fill = dose), trim = FALSE) +
  geom_boxplot(width = 0.2) +
  scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07")) +
  # 去除图例
  theme(legend.position = "none")

p1 + p2
代码语言:javascript
复制
# 多组图
# supp通过颜色显示,并设立图例
p + geom_violin(aes(color = supp), trim = FALSE, position = position_dodge(0.9)) +
  # 添加箱式图
  geom_boxplot(aes(color = supp), width = 0.15, position = position_dodge(0.9)) +
  # 自定义配色方案
  scale_color_manual(values = c("#00AFBB", "#E7B800"))

点图

geom_dotplot()

stackdir:点的堆叠方向默认为向上

stackratio:点的距离

color, fill:同之前

dotsize:点的大小

代码语言:javascript
复制
# 点图绘制并添加均值和标准差
p3 <-
  p + geom_dotplot(binaxis = "y",
                   stackdir = "center",
                   fill = "lightgray") +
  stat_summary(fun.data = "mean_sdl", fun.args = list(mult = 1))

# 点图和箱式图的合并
p4 <-  p + geom_boxplot(width = 0.5) +
  geom_dotplot(binaxis = "y",
               stackdir = "center",
               fill = "lightgray")

# 点图和小提琴图合并
p5 <- p + geom_violin(trim = FALSE) +
  geom_dotplot(binaxis = 'y',
               stackdir = 'center',
               fill = "#999999") +
  stat_summary(fun.data = "mean_sdl",  fun.args = list(mult = 1))
p3 + p4 + p5
代码语言:javascript
复制
# 多组点图

# 分组信息展示为添加颜色
p6 <- p + geom_boxplot(width = 0.5) +
  geom_dotplot(aes(fill = supp), binaxis = 'y', stackdir = 'center') +
  scale_fill_manual(values = c("#00AFBB", "#E7B800"))

# 将箱式图分开,并设置间隔为0.8
p7 <-
  p + geom_boxplot(aes(color = supp), width = 0.5, position = position_dodge(0.8)) +
  geom_dotplot(
    aes(fill = supp, color = supp),
    binaxis = 'y',
    stackdir = 'center',
    dotsize = 0.8,
    position = position_dodge(0.8)
  ) +
  scale_fill_manual(values = c("#00AFBB", "#E7B800")) +
  scale_color_manual(values = c("#00AFBB", "#E7B800"))

p6 + p7

结束语

小提琴图不是很常用,也在一些杂志中见到过,但是不是很多见,了解一下就可,毕竟数据分布,还要涉及到后续分析的内容,和自己后续的分析方案是否配套。慎用吧

关于ggplot添加图层真是个好东西,这样的点和箱式图的组合,以前都是用prisma做。

love&peace

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 火星娃统计 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ggplot_Violin Plot & dot plot
    • 概述
      • 主要函数和参数
        • 代码
          • 点图
            • 结束语
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档