R语言绘图:小提琴图

小提琴图定义:

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

小提琴图的作用:

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

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

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

小提琴图怎么做?

R语言绘制小提琴图

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

箱线图和小提琴图合并

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

添加显著性标签

R 复制代码
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为*号
  )
相关推荐
asyxchenchong8881 分钟前
R语言的现代线性回归实践
r语言
许彰午2 分钟前
04_Java数组操作全解
java·开发语言·python
废弃的小码农5 分钟前
APP测试--adb使用介绍
python·测试工具·adb
曲幽27 分钟前
你的FastAPI又在服务器上“跑不起来”了?来,今天咱把打包这件事彻底聊透
linux·windows·python·docker·fastapi·web·pyinstaller·nssm·services
AI玫瑰助手29 分钟前
Python函数:局部变量与全局变量的作用域
开发语言·python·信息可视化
imDwAaY30 分钟前
机器学习入门:从感知机到逻辑回归,理解线性分类器与Softmax CS188 Note20 学习笔记
人工智能·笔记·python·学习·机器学习·逻辑回归
2601_9611940231 分钟前
2026初级会计实务教材电子版|章节讲义+习题PDF
python·考研·django·pdf·virtualenv·pygame
极客笔记Jack34 分钟前
Scanpy 富集分析实战:gseapy 从基因列表到通路解读
python
ECT-OS-JiuHuaShan37 分钟前
辩证函数,渡劫代谢:时势造英雄,英雄发神经
数据库·人工智能·机器学习
岁月宁静1 小时前
Hermes Agent:让你的AI智能体越用越聪明
python·agent