前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ggplot2优雅的绘制配对气泡图

ggplot2优雅的绘制配对气泡图

作者头像
生信菜鸟团
发布于 2023-08-23 01:00:39
发布于 2023-08-23 01:00:39
49900
代码可运行
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团
运行总次数:0
代码可运行

Step1. R包和数据加载、主题设置

测试数据在:

链接:https://pan.baidu.com/s/1MuMgMZZCcdO-IGS7_ysfkQ?pwd=1234 提取码:1234

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(dplyr)
library(ggplot2)
library(ggpubr)
library(rstatix)
#### 1.读入数据
pan.meta = readRDS("./Paired_test.data.rds")

head(pan.meta)
#   ID    Group Type      paired Expression
# 1 TCGA-BL-A13J-01A tumor BLCA TCGA-BL-A13J   5.418168
# 2 TCGA-BT-A20N-01A tumor BLCA TCGA-BT-A20N   2.472168
# 3 TCGA-BT-A20Q-01A tumor BLCA TCGA-BT-A20Q   5.149659
# 4 TCGA-BT-A20R-01A tumor BLCA TCGA-BT-A20R   5.590747
# 5 TCGA-BT-A20U-01A tumor BLCA TCGA-BT-A20U   6.717855
# 6 TCGA-BT-A20W-01A tumor BLCA TCGA-BT-A20W   7.140064

ID是TCGA的barcode,Group是肿瘤与对照样本,paired是配对的barcode信息,Expression则是目标基因的表达量。

然后设置主题和颜色:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mytheme <- theme(plot.margin=unit(c(0.5,0.5,0.5,0.5),units=,"cm"),
                 axis.line = element_line(color = "black",size = 0.4),
                 panel.grid.minor = element_blank(),
                 panel.grid.major = element_line(size = 0.2,color = "#e5e5e5"),
                 axis.text.y = element_text(color="black",size=10),
                 axis.text.x = element_text(angle = 45, hjust = 1 ,color="black",size=10),
                 legend.position = "none",
                 panel.spacing = unit(0,"lines"))
fill.color = c(normal="#56B4E9",tumor= "#E69F00")

Step2. 可视化绘图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p1 = ggplot(pan.meta, aes(x = Group,y = Expression,fill = Group)) +
  geom_line(aes(group=paired),position = position_dodge(0.2),color="grey80") +
  geom_point(aes(group=paired,size=Expression),
             pch=21,
             size=3,
             # position = position_dodge(0),
             position = position_jitter(w = 0.1))+
  stat_summary(fun.data = 'mean_se', geom = "errorbar", color = "red", 
               width = 0.25, size = 0.8, position = position_dodge( .9)) +
  # scale_size_continuous(range=c(1,3)) +
  facet_wrap(.~Type,scales = "free_y",ncol = 11) +
  scale_fill_manual(values = fill.color) +
  # scale_y_continuous(limits = c(-4,4),minor_breaks = seq(0,90,1)) +
  labs(x= NULL,y="Gene expression")+
  stat_compare_means(aes(group =  Group),
                     paired = T,
                     # label.y = 3.5, 
                     label.x = 1.5,
                     method = "t.test",
                     label = "p.signif",
                     size = 4) + 
  theme_bw() + mytheme
p1

image-20230616113300005

上面的P值是用stat_compare_means计算的,其实多组间的两两比较还可以考虑用校正后的P值,可以使用rstatix包进行计算:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
stat.test<- pan.meta %>%
  group_by(Type) %>%
  t_test(Expression~Group) %>%
  adjust_pvalue(method = "bonferroni") %>%
  add_significance("p.adj")%>%
  add_xy_position(x="Group",dodge = 0.8)
stat.test

image-20230616112934079

可视化绘图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p2 = ggplot(pan.meta, aes(x = Group, y = Expression)) + 
  geom_line(aes(group=paired),position = position_dodge(0.2),color="grey80") +
  geom_point(aes(group=paired,size=Expression,
                 # alpha=Expression,
                 fill= Group),pch=21,size=3,
             position = position_jitter(w = 0.1))+
  stat_summary(fun.data = 'mean_se', geom = "errorbar", color = "red", 
               width = 0.25, size = 0.8, position = position_dodge( .9)) +
  facet_wrap(~Type ,scale="free_y",nrow = 2) + 
  scale_fill_manual(values= fill.color) +
  scale_x_discrete( labels=NULL ) + 
  stat_pvalue_manual(stat.test,label = "p.adj", #p.adj.signif
                     tip.length = 0.05,
                     # y.position = 6,
                     remove.bracket = T,hjust=1)+
  labs(x= NULL,y="Gene expression")+
  theme_bw() + mytheme
p2

P值太长了,这里可以用星号,或者是科学计数法显示保留前两位小数:

  • 用星号
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
###用星号
p3 = ggplot(pan.meta, aes(x = Group, y = Expression)) + 
  geom_line(aes(group=paired),position = position_dodge(0.2),color="grey80") +
  geom_point(aes(group=paired,size=Expression,
                 # alpha=Expression,
                 fill= Group),pch=21,size=3,
             position = position_jitter(w = 0.1))+
  stat_summary(fun.data = 'mean_se', geom = "errorbar", color = "red", 
               width = 0.25, size = 0.8, position = position_dodge( .9)) +
  facet_wrap(~Type ,scale="free_y",nrow = 2) + 
  scale_fill_manual(values= fill.color) +
  scale_x_discrete( labels=NULL ) + 
  stat_pvalue_manual(stat.test,label = "p.adj.signif",
                     tip.length = 0.05,
                     # y.position = 6,
                     remove.bracket = F)+
  labs(x= NULL,y="Gene expression")+
  theme_bw() + mytheme
p3

image-20230616114931024

  • 科学计数法显示保留前两位小数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
###科学计数法显示保留前两位小数
stat.test$p.adj <- format(stat.test$p.adj, scientific = TRUE) %>% as.numeric()
stat.test$p.adj <- sprintf("%.2e", stat.test$p.adj)
stat.test$p.adj = ifelse(as.numeric(stat.test$p.adj) > 0.05,"NS",stat.test$p.adj)

p4 = ggplot(pan.meta, aes(x = Group, y = Expression)) + 
  geom_line(aes(group=paired),position = position_dodge(0.2),color="grey80") +
  geom_point(aes(group=paired,size=Expression,
                 # alpha=Expression,
                 fill= Group),pch=21,size=3,
             position = position_jitter(w = 0.1))+
  stat_summary(fun.data = 'mean_se', geom = "errorbar", color = "red", 
               width = 0.25, size = 0.8, position = position_dodge( .9)) +
  facet_wrap(~Type ,scale="free_y",nrow = 2) + 
  scale_fill_manual(values= fill.color) +
  scale_x_discrete( labels=NULL ) + 
  stat_pvalue_manual(stat.test,label = "p.adj", #p.adj.signif
                     tip.length = 0.05,
                     # y.position = 6,
                     remove.bracket = T,hjust=1)+
  labs(x= NULL,y="Gene expression")+
  theme_bw() + mytheme
p4

写在最后

其实我的ggplot2功底也不是很好,没有很系统的去钻研ggplot2的语法和结构。因为我认为我只要会修改别人的ggplot2绘图代码,然后把自己想要绘制的各种元素,能转化为语言去进行网络搜索,这样想绘制的图,基于上都可以根据百度谷歌和工具书去实现。绘图当然很重要,但是科研节奏这么紧张,ggplot2的学习到底应该投入多少时间(当然也看悟性),这点见仁见智。最后给大家分享一本我经常翻阅的ggplot2工具书

- END -

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ggplot2优雅绘制多元素箱线图
R语言数据分析指南
2024/03/20
1640
ggplot2优雅绘制多元素箱线图
ggplot2优雅的绘制全能型箱线图
❝今天又遇到观众老爷提问如何给多组箱线图添加置信区间及P值与R值,想着可能其他朋友也有需求,那么就废话不多说直接开干,还是之前的绘图方案做了一些细微的改动,下面来看具体案例; ❞ 加载R包 library(tidyverse) library(gapminder) library(ggsci) library(ggprism) library(rstatix) library(ggpubr) library(ggpmisc) 数据清洗 df <- gapminder %>% filter(year
R语言数据分析指南
2022/09/21
1.1K0
ggplot2优雅的绘制全能型箱线图
ggplot2优雅的绘制多组配对箱线图
❝有个VIP群里的朋友今天问有没有绘制三组之间配对箱线图的代码,记得小编之前绘制过相关类型的图表,不过既然观众老爷有需求那就废话不多说直接开画;依然是以前的经典风格只不过此次在图上加上了统计分析,下面来看具体案例 加载R包 library(tidyverse) library(gapminder) library(ggsci) library(ggprism) library(rstatix) library(ggpubr) 数据清洗 df <- gapminder %>% filter(year
R语言数据分析指南
2022/09/21
3.7K0
ggplot2优雅的绘制多组配对箱线图
R初学者必知图形添加显著性标记小细节
❝本节来介绍如何对图形做显著性标记,介绍两种方法第一种通过代码来自动进行标记,另一种通过手动的方式来添加标记;两种方法各有其独特的用处,各位观众老爷细细品味。 加载R包 library(tidyverse) library(readxl) library(ggsignif) library(rstatix) library(ggpubr) library(ggsci) 统计分析 stat.test <- read_excel("41588_2022_1184_MOESM6_ESM.xlsx",sheet
R语言数据分析指南
2022/12/20
1.8K0
R初学者必知图形添加显著性标记小细节
ggplot2优雅的绘制配对连线云雨图
❝本节来介绍如何使用ggplot2绘制配对连线云雨图,图形倒也简单主要是细节;小编给了两个案例来进行展示,有循环绘图需求的可以看最后一个案例;❞ 加载R包 library(tidyverse) library(ggsignif) library(gghalves) library(ggsci) 数据清洗 df <- read_tsv("data.xls") %>% filter(year %in% c(1957,2007),continent !="Oceania") %>% select(
R语言数据分析指南
2022/12/20
9580
ggplot2优雅的绘制配对连线云雨图
ggplot2添加躺平版P_value
❝今天来主要介绍如何在常见的箱线图基础上水平添加显著性标记,也许恰好您正好有此特殊需求,希望对各位观众老爷有所帮助;下面来看具体案例; ❞ 加载R包 library(tidyverse) library(rstatix) library(ggprism) library(ggpubr) 定义主题 theme_niwot <- function(){ theme_test() + theme(axis.title.x = element_blank(), axis.line
R语言数据分析指南
2022/09/21
5740
ggplot2添加躺平版P_value
[NC图表复现] ggplot2绘制分裂小提琴图
R语言数据分析指南
2024/01/17
3820
[NC图表复现] ggplot2绘制分裂小提琴图
跟着nature学绘图-条图叠加散点与p值
R语言数据分析指南
2024/04/28
1890
跟着nature学绘图-条图叠加散点与p值
[会员专享] ggplot2组合绘制相关性箱线图
R语言数据分析指南
2023/08/18
3920
[会员专享] ggplot2组合绘制相关性箱线图
ggplot2优雅对并排条形图添加显著性标记
❝本节来介绍如何使用「rstatix」来进行统计分析,并使用「ggpubr」来添加显著性标记,下面通过一个小例子来进行展示;本次使用R内置数据集; 加载R包 library(tidyverse) library(rstatix) library(ggpubr) 统计分析 stat.test <- iris %>% pivot_longer(-Species) %>% filter(Species !="versicolor") %>% mutate(group=str_sub(na
R语言数据分析指南
2022/09/21
1.6K0
ggplot2优雅对并排条形图添加显著性标记
R优雅的进行统计分析(2)自定义添加统计信息
❝本节来介绍如何使用R语言来做统计分析,通过「rstatix」包进行统计检验,完全使用tidyverse体系进行数据清洗及可视化,使用add_pvalue,stat_pvalue_manual两个函数来自定义添加p值 ❞ 加载R包 library(tidyverse) library(rstatix) library(ggprism) library(ggpubr) library(ggsci) 数据清洗 df <- ToothGrowth %>% mutate(dose=as.factor(d
R语言数据分析指南
2022/09/21
7770
R优雅的进行统计分析(2)自定义添加统计信息
R语言之可视化①误差棒
本教程介绍如何使用R软件和ggplot2包创建带有误差棒的图形。 可以使用以下函数创建不同类型的错误栏:
用户1359560
2018/12/05
2.6K0
R语言之可视化①误差棒
24种R语言新手入门之小提琴图(三)
柱状图和箱线图的代码能理解了其实发现好多作图都是可以触类旁通的,小提琴图作为科研结果常用展示图也不可或缺,用ggplot或者vioplot。
生信初学者
2023/03/14
1.9K0
24种R语言新手入门之小提琴图(三)
ggplot2再话箱线图之几何填充
❝VIP群里有观众老爷询问如何对箱线图进行几何形状填充,那么今天就来具体介绍一番;在原有的基础上做了一些小的改动也许恰好您正好有此特殊需求,需要着重体会八个字「变实为虚,变虚为实」,希望对各位观众老爷有所帮助;下面来看具体案例; ❞ 加载R包 library(tidyverse) library(ggsci) library(ggprism) library(rstatix) library(ggpubr) library(ggpmisc) library(ggpattern) 加载数据 gapminde
R语言数据分析指南
2022/09/21
3970
ggplot2再话箱线图之几何填充
ggplot2实现分半小提琴图绘制基因表达谱和免疫得分
最近看到很多人问下面这个图怎么绘制,看着确实不错。于是我查了一些资料,这个图叫split violin或者half violin,本质上是一种小提琴图。参考代码在https://gist.github.com/Karel-Kroeze/746685f5613e01ba820a31e57f87ec87
生信宝典
2021/04/15
3.6K0
ggplot2优雅的给图像添加阴影
❝本周「VIP群」有个朋友询问下面这张图的绘制方法,需要对两组数据做统计分析并且只给差异显著的添加阴影背景,那么肯定是要全部通过代码来自动实现这些需求;即然观众老爷有需求那小编就来详细拆解一下这张图的代码,下面来看具体案例 ❞ 加载R包 library(tidyverse) library(rstatix) library(ggpubr) library(GGally) library(ggsci) 导入数据 df <- read_csv("easy_input.csv") ❝由于要根据显著性来添
R语言数据分析指南
2022/09/21
1.2K0
ggplot2优雅的给图像添加阴影
绘制带显著性比较的bar图
geom_boxplot(position=position_dodge(),width=0.5)+
爱学习的小明明
2020/09/26
4.3K0
绘制带显著性比较的bar图
上手即用,分组统计检验直方图的绘图脚本分享
发文章,写论文,分组统计检验直方图是最常见和最实用的,你是否还在烦恼如果把图画好,帮你解决困难啦!这里分享下同事新鲜写就的绘图脚本,自带了示例数据,可以一键出图,助力你的科研和学习。
用户1075469
2022/05/25
5830
上手即用,分组统计检验直方图的绘图脚本分享
R绘图笔记 | 散点分布图与柱形分布图
https://docs.qq.com/sheet/DV0dxREV1YkJ0ZmVj
DoubleHelix
2020/11/11
3K0
R绘图笔记 | 散点分布图与柱形分布图
ggplot_Violin Plot & dot plot
小提琴图用于可视化数据的分布及其概率密度。它是箱式图和密度图的组合,密度图通过旋转放置在箱式图侧边,以显示数据的分布形状。小提琴图比箱形图显示更多的信息。主要是数据的分布,可以看出是双峰的还是多峰的
火星娃统计
2020/09/15
1.5K0
ggplot_Violin Plot & dot plot
相关推荐
ggplot2优雅绘制多元素箱线图
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验