首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >raincloud云雨图:一图囊括小提琴+箱线图+散点图

raincloud云雨图:一图囊括小提琴+箱线图+散点图

作者头像
生信菜鸟团
发布2025-03-17 20:56:21
发布2025-03-17 20:56:21
1.6K0
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团

最近在搜集好看的图的时候,看到了一幅下面这样的图:

图来自文献:《Benzo[a]pyrene stress impacts adaptive strategies and ecological functions of earthworm intestinal viromes》。

简单搜索了一下,这种图因为上部分的密度曲线像一朵云,下面的三点像云层下面下着的雨,形象的叫云雨图!

它用于展示多个数据集的分布:结合了小提琴展示的数据密度区域,箱线图展示的四分位数,以及散点图展示的具体的每一个点的分布!

又学到了~

图注:

Fig. 3 Composition and lifestyle of earthworm gut virome. G Abundance (Log10 RPKM) of prophage.

学习绘制

搜了一个学习资料:

https://jtr13.github.io/cc21fall2/raincloud-plot-101-density-plot-or-boxplotwhy-not-do-both.html

下面来看看怎么绘制吧!

首先需要安装包

半个扁平的小提琴来自包:https://github.com/PsyTeachR/introdataviz, 后面用到的函数为:geom_flat_violin

代码语言:javascript
复制
# you may have to install devtools first with 
# install.packages("devtools")

devtools::install_github("psyteachr/introdataviz")
library(introdataviz)

加载一下其他所需要的包:

代码语言:javascript
复制
library(tidyverse)
library(magrittr)
library(ggplot2)
library(reshape2)
library(ggsci)

读取数据

我这里用了一个基因表达矩阵,每一行为一个基因,每一列为一个样本:示例数据可以找我,微信:Biotree123,后面放到github上面:https://github.com/zhangj1115/example_data

代码语言:javascript
复制
df <- read.table("Expression.txt",header = T,sep = "\t",row.names = 1,comment.char = "")
df <- df[1:1000, ] # 这里区前1000行,只是为了画图好看,用所有的时候画出来的比较丑!
head(df)
df <- log2(df+1)
# variable.name:melt操作后,为新列变量取名
# value.name:新列对应值的变量名
data <- melt(df, variable.name="sample", value.name="expression")
head(data)

# head(data)
# sample expression
# 1 SRR1039508   5.083578
# 2 SRR1039508   4.562775
# 3 SRR1039508   3.765664
# 4 SRR1039508   1.966421
# 5 SRR1039508   7.308919
# 6 SRR1039508   6.138571

设置颜色:

代码语言:javascript
复制
JACE_COLOR <- c("#FF5A5F", "#FFB400", "#007A87", 
                "#8CE071", "#7B0051", "#00D1C1", "#FFAA91", "#B4A76C", 
                "#9CA299", "#565A5C", "#00A04B", "#E54C20")

使用ggplot2绘图

代码语言:javascript
复制
p <- ggplot(data = data, aes(x = sample, y = expression,  fill = sample) ) +
  geom_flat_violin(position = position_nudge(x = 0.3, y = 0), alpha = 0.5) +  # 半小提琴图:introdataviz
  geom_point(aes(y = expression, color = sample ),       # 散点图
             position = position_jitter(width = 0.1), 
             size = 0.5, alpha = 0.1) +  
  geom_boxplot(width = 0.1, outlier.shape = NA, alpha = 0.8) + # 箱线图
  labs(y = "expression", x = NULL) + # 设置标题
  guides(fill = FALSE, color = FALSE) + # 删除图例
  scale_y_continuous(limits = c(0, 18)) + # 设置 y 轴范围
# 颜色
  scale_fill_manual(values = JACE_COLOR[1:8]) +
  scale_colour_manual(values = JACE_COLOR[1:8]) + 
  coord_flip() +
  theme_bw() 
p

结果如下:

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

本文分享自 生信菜鸟团 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 学习绘制
    • 首先需要安装包
    • 读取数据
    • 设置颜色:
    • 使用ggplot2绘图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档