源代码已经上传至https://github.com/iMetaScience/iMetaPlot/tree/main/230130barplot 如果你使用本代码,请引用:Changwu Wu. 2022. Pan-cancer analyses reveal molecular and clinical characteristics of cuproptosis regulators. iMeta 1: e68. https://doi.org/10.1002/imt2.68

代码编写及注释:农心生信工作室

写在前面

柱状图 (bar plot) 及其衍生图是最常见的绘图模式,能够描述多种类型数据。本期我们挑选2022年12月5日刊登在iMeta上的Pan-cancer analyses reveal molecular and clinical characteristics of cuproptosis regulators - iMeta|湘雅医院刘庆组-泛癌分析揭示铜死亡调节子的临床和分子特征,选择文章的Figure 7B进行复现,基于ggplot2包,讲解和探讨双侧柱状图的绘制方法,先上原图:

接下来,我们将通过详尽的代码逐步拆解原图,最终实现对原图的复现。

R包检测和安装

01

安装核心R包ggplot2以及一些功能辅助性R包,并载入所有R包。

if (!require("ggplot2"))install.packages('ggplot2')
if (!require("patchwork"))install.packages('patchwork')
# 加载包
library(ggplot2)
library(patchwork)

生成测试数据

02

观察原图,正负两种相关性分别用不同颜色柱状图表示,因此我们的思路是先绘制两幅柱状图,再将柱状图拼接起来。这需要随机生成两个数据框。

set.seed(123)
df_negative <- data.frame(pathway = paste("pathway", c(1:15)), num = sample(11, 15, replace = T))
df_positive <- data.frame(pathway = paste("pathway", c(1:15)), num = sample(11, 15, replace = T))

作图预览

03

开始作图,先绘制左半边柱状图。该图需要反转x轴y轴,并颠倒柱子方向:

p1 <- ggplot(df_negative)+geom_bar(aes(x = pathway, y = num), stat = "identity", fill = "#00BCD4") +coord_flip()+ #反转x轴和y轴scale_y_reverse(expand = expansion(0))+ #颠倒y轴,并将y轴与边框距离缩小为0ggtitle("Negative correlation")+theme(axis.title = element_blank(), #去除轴标题panel.background = element_blank(), #去除背景panel.grid = element_line (colour = "lightgrey"), #设置网格线颜色panel.border = element_rect(fill = NA, colour = "black", linewidth = 0.5), #设置背景边框plot.title = element_text(size = 12, hjust = 0.5)) #设置主标题字体大小并让标题居中

04

再绘制右半边柱状图。该图仅需要反转x轴y轴,不需要颠倒柱子方向:

p2 <- ggplot(df_positive)+geom_bar(aes(x = pathway, y = num), stat = "identity", fill = "#E64A19") +coord_flip()+ #反转x轴和y轴scale_y_continuous(expand = expansion(0))+ggtitle("Positive correlation")+ #添加主标题theme(axis.text.y = element_blank(), #去除y轴刻度文本axis.ticks.y = element_blank(), #去除y轴刻度axis.title = element_blank(), panel.background = element_blank(), #去除背景panel.grid = element_line (colour = "lightgrey"), #设置网格线颜色panel.border = element_rect(fill = NA, colour = "black", linewidth = 0.5), #设置背景边框plot.title = element_text(size = 12, hjust = 0.5)) #设置主标题字体大小并让标题居中

05

利用patchwork包合并左右两幅图片:

#合并图片,添加一个脚注释
p <- p1+p2+plot_annotation(caption = 'Number of cancer type')

06

我们需要用AI微调,将两幅图之间缝隙消除。成品图如下:

完整代码

if (!require("ggplot2"))install.packages('ggplot2')
if (!require("patchwork"))install.packages('patchwork')
# 加载包
library(ggplot2)
library(patchwork)set.seed(123)
df_negative <- data.frame(pathway=paste("pathway",c(1:15)),num=sample(11,15,replace = T))
df_positive <- data.frame(pathway=paste("pathway",c(1:15)),num=sample(11,15,replace = T))p1 <- ggplot(df_negative)+geom_bar(aes(x = pathway, y = num), stat = "identity", fill = "#00BCD4") +coord_flip()+ #反转x轴和y轴scale_y_reverse(expand = expansion(0))+ #颠倒y轴,并将y轴与边框距离缩小为0ggtitle("Negative correlation")+theme(axis.title = element_blank(), #去除轴标题panel.background = element_blank(), #去除背景panel.grid = element_line(colour = "lightgrey"), #设置网格线颜色panel.border = element_rect(fill = NA, colour = "black",linewidth=0.5),#设置背景边框plot.title = element_text(size = 12, hjust = 0.5)) #设置主标题字体大小并让标题居中p2 <- ggplot(df_positive)+geom_bar(aes(x = pathway,y=num),stat = "identity", fill = "#E64A19") +coord_flip()+ #反转x轴和y轴scale_y_continuous(expand = expansion(0))+ggtitle("Positive correlation")+ #添加主标题theme(axis.text.y = element_blank(),axis.ticks.y = element_blank(),axis.title = element_blank(),panel.background = element_blank(), #去除背景panel.grid = element_line (colour = "lightgrey"), #设置网格线颜色panel.border = element_rect(fill = NA, colour = "black",linewidth=0.5),#设置背景边框plot.title = element_text(size = 12, hjust = 0.5)) #设置主标题字体大小并让标题居中#合并图片,添加一个脚注释
pdf("Figure 7B.pdf", width = 7, height = 5)
p1+p2+plot_annotation(caption = 'Number of cancer type')
dev.off()
#> quartz_off_screen
#>                 2

以上数据和代码仅供大家参考,如有不完善之处,欢迎大家指正!

更多推荐

(▼ 点击跳转)

高引文章 ▸▸▸▸

iMeta | 德国国家肿瘤中心顾祖光发表复杂热图(ComplexHeatmap)可视化方法

▸▸▸▸

iMeta | 浙大倪艳组MetOrigin实现代谢物溯源和肠道微生物组与代谢组整合分析

▸▸▸▸

iMeta | 高颜值绘图网站imageGP+视频教程合集

第1卷第1期

第1卷第2期

第1卷第3期

第1卷第4期

期刊简介

“iMeta” 是由威立、肠菌分会和本领域数百位华人科学家合作出版的开放获取期刊,主编由中科院微生物所刘双江研究员和荷兰格罗宁根大学傅静远教授担任。目的是发表原创研究、方法和综述以促进宏基因组学、微生物组和生物信息学发展。目标是发表前10%(IF > 15)的高影响力论文。期刊特色包括视频投稿、可重复分析、图片打磨、青年编委、前3年免出版费、50万用户的社交媒体宣传等。2022年2月正式创刊发行!

联系我们

iMeta主页:http://www.imeta.science

出版社:https://onlinelibrary.wiley.com/journal/2770596x
投稿:https://mc.manuscriptcentral.com/imeta
邮箱:office@imeta.science

往期精品(点击图片直达文字对应教程)

机器学习

后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集

跟着iMeta学做图|双侧柱状图展示具有正负相关性的类型数量相关推荐

  1. 跟着iMeta学做图|用三元图展示微生物种群相对丰度

    本文代码已经上传至https://github.com/iMetaScience/iMetaPlot230125ternary 如果你使用本代码,请引用:Chenyuan Dang. 2022. Mi ...

  2. 跟着iMeta学做图|NMDS分析展示群落beta多样性

    原始教程链接:https://github.com/iMetaScience/iMetaPlot/tree/main/221108NMDS 写在前面 非度量多维尺度分析(Non-metric mult ...

  3. 跟着iMeta学做图|ComplexHeatmap包绘制热图展示不同样本物种相对丰度

    本教程相关代码已经上传至 https://github.com/iMetaScience/iMetaPlot/tree/main/221125HeatmapOfAbundance 如果你使用本代码,请 ...

  4. 跟着iMeta学做图|circlize绘制和弦图展示样本物种相对丰度

    原始教程链接:https://github.com/iMetaScience/iMetaPlot/tree/main/221027Circlize 写在前面 和弦图 (Chord diagram) 可 ...

  5. 跟着iMeta学作图 | 山峦图展示微生物丰度随盐度增加的动态变化

    本文代码已经上传至https://github.com/iMetaScience/iMetaPlot如果你使用本代码,请引用:Changchao Li. 2023. Destabilized micr ...

  6. 中国双侧人工耳蜗行业市场供需与战略研究报告

    双侧人工耳蜗市场的企业竞争态势 该报告涉及的主要国际市场参与者有Cochlear.MED-EL.Advanced Bionics (Sonova).Oticon (William Demant).Ha ...

  7. Echarts 双侧 双表头 柱状图 折线图

    Echarts 双侧 双表头 柱状图 折线图 带箭头 区分颜色 成品图片(如需折线图自行更改) 废话不多say 上代码

  8. 跟着Cell学作图 | 2.柱状图+误差棒+散点+差异显著性检验

    跟着 Cell 学作图 | 2.柱状图+误差棒+散点 "实践是检验真理的唯一标准." "复现是学习R语言的最好办法." 2021.4.12_1 DOI: 10. ...

  9. python绘制双Y轴折线图以及单Y轴双变量柱状图

    近来实验室的师姐要发论文,由于论文交稿时间临近,有一些杂活儿需要处理,作为实验室资历最浅的一批,我这个实习生也就责无旁贷地帮忙当个下手.今天师姐派了一个小活,具体要求是: 给一些训练模型的迭代次数,训 ...

最新文章

  1. 年近 40,我在互联网大厂做高龄“大头兵”
  2. 定位服务器数据丢弃包问题
  3. android webView加载网络视频
  4. 华为鸿蒙一再延期,华为P50再次延期,鸿蒙系统正式版加持,有望与新平板一同登场...
  5. c语言 strupr,C语言 strupr()用法及代码示例
  6. JAVA 文件下载乱码问题解决办法
  7. 使用es6制作简单数独游戏
  8. Linux内存管理之页面回收
  9. Python 打印日志
  10. java初级面试总结
  11. cdma特有效应_[多选] 相对于IS-95A,下列特征哪些是CDMA20001x系统所特有的().
  12. PcShareVIP弄来的免杀思路
  13. 大数据智能推荐系统原理介绍
  14. 基于p110δ晶体结构发现一种全新的具有高度选择性的PI3Kδ抑制剂的研究
  15. 论文解读:预测lncRNA的相互作用生物分子类型:一种集成深度学习方法
  16. 中餐菜单分类名称创意_餐厅菜单的种类分类
  17. JAVA代码托管平台_推荐几个常用的代码托管平台
  18. USB转串口驱动分析(一)
  19. android arcgis使用自定义图片背景底图(tif图片制作)
  20. TiDB+TiSpark部署--安装,扩缩容及升级操作

热门文章

  1. 给大家推荐一个非常好的Java学习网站
  2. iconfont 图标宽高出问题_阿里巴巴Iconfont加入部分图标后导致所有图标高度拉升问题...
  3. 设置树莓派屏幕一直亮屏,禁止休眠的解决方案
  4. Field studentMapper in com.zhongxia.controller.StudentController required a bean of type 'com.zhongx
  5. ubuntu上显卡驱动安装——GeForce GTX 1080 Ti
  6. 达人评测 R9 7940HS和i9 12900HK选哪个 锐龙R97940HS和酷睿i912900HK对比
  7. 计算机考研836科目,2017年中南财经政法大学836计算机学科基础考研初试自命题考试科目大纲...
  8. 计算机学科概论学习心得
  9. GitHub上最励志的计算机自学教程!
  10. 一个女孩从软件测试工程师到主管的成长