当前位置: 首页 > news >正文

R语言绘图:小提琴图

小提琴图定义:

小提琴图(Violin Plot),是一种集成了箱线图和核密度图特征的数据可视化图形,用于展示多组数据的分布情况和概率密度。

小提琴图的作用:

1.显示数据分布:小提琴图能够清晰地展示数据的分布情况,包括数据的中位数、四分位数、离群值等统计信息。通过小提琴形状的宽度和高度,可以直观地比较不同组或条件下数据的分布差异。

2.比较多组数据:将不同基因在不同组织中的表达水平用小提琴图展示,以便研究它们的表达模式是否有显著差异。

3.异常值检测:在小提琴图中,可以观察到小提琴外部的离散数据点,这些数据点往往表示数据中的异常值。可以通过观察离群点的出现情况来判断数据中是否存在异常值。

小提琴图怎么做?

R语言绘制小提琴图

  • # 代码来源:https://www.r2omics.cn/
    # 加载R包,没有安装请先安装  install.packages("包名") 
    library(tidyverse)
    
    # 读取箱线图数据文件
    df = read.delim("https://www.r2omics.cn/res/demodata/boxplot.txt",# 将此处换成你自己电脑里的文件
                    header = T      # 指定第一行是列名
    )
    
    # 把数据转换成ggplot常用的类型(长数据)
    df = df %>%
      pivot_longer(-1,names_to = "Sample",values_to = "Value")
    
    # 绘图
    p = ggplot(df,aes(x=Sample,y=Value,fill=Sample))+
      # stat_boxplot(geom = "errorbar",    # 添加误差线
      #  width=0.3)+
      geom_violin(alpha = 1,              # 透明度
                  trim = T,               # 是否修剪尾巴,即将数据控制到真实的数据范围内
                  scale = "count",         # 如果“area”(默认),所有小提琴都有相同的面积(在修剪尾巴之前)。如果是“count”,区域与观测的数量成比例。如果是“width”,所有的小提琴都有相同的最大宽度。
    
                   )+
      theme_bw()+                          # 主题
      theme(
        axis.text.x = element_text(angle = 90,
                                   vjust = 0.5
        )       # x轴刻度改为倾斜90度,防止名称重叠
      )
    p

图片

箱线图和小提琴图合并


# 其实就是在小提琴的图层下再画一个箱线图
p +
  geom_boxplot(width=0.16,
               fill="white",
               outlier.alpha = 0
              )

图片

添加显著性标签

library(ggsignif)  # 用于添加显著性标签

p + geom_signif(                         # 添加显著性标签
    comparisons=list(c("Sample1","Sample2"),c("Sample3","Sample4")), # 选择你想在哪组上添加标签
    step_increase = 0.1,
    test="t.test",                     # "t 检验,比较两组(参数)" = "t.test","Wilcoxon 符号秩检验,比较两组(非参数)" = "wilcox.test"
    test.args = list("var.equal" = T), # 等方差 
    map_signif_level=F                 # 标签样式F为数字,T为*号
  )

图片

相关文章:

  • 在Mac上一键安装Mysql(解决所有安装问题)
  • sql-DDL
  • 《C语言中的“吃豆人”:%*c 的奇妙冒险》
  • Lineageos 22.1(Android 15)实现负一屏
  • CSS 选择器详解:类型、用法与示例
  • 微博ip属地不发微博会不会变
  • Oracle 数据迁移至 GaussDB 注意事项
  • Gone v2 Tracer 组件-给微服务提供统一的traceID
  • 科技资讯杂志科技资讯编辑部科技资讯杂志社2025年第2期目录
  • 软考笔记——程序设计语言基础知识
  • Linux文件IO
  • 浅谈canal实例 在docker里面安装canal镜像 Canal监听MySQL数据库变更并同步更新Redis和Elasticsearch 示例
  • zabbix原生linux命令部署和docker部署
  • docker安装milvus向量数据库Attu可视化界面
  • 母婴电商企业案例:日事清驱动项目管理执行与OKR目标管理的流程自动化实践
  • 为什么labelme框选图片后闪退
  • 红宝书第七讲:this绑定与强制类型转换详解(小白指南)
  • 51单片机程序变量作用域问题
  • 【Oracle资源损坏类故障】:详细了解坏块
  • PyTorch分布式训练中各节点如何通信
  • 李在明当选韩国共同民主党总统候选人
  • 传染病防治法修订草案提请三审,拟加强医疗机构疾控能力建设
  • 清华成立人工智能医院,将构建“AI+医疗+教育+科研”闭环
  • 我驻阿巴斯总领馆:将持续跟踪港口爆炸事件进展,全力确保中方人员安全
  • 年客流超2500万,九岁的上海国际旅游度假区有哪些文旅商体实践?
  • 好未来:2025财年收入增长51%,下个财年提高整体盈利能力是首要任务