大家好,欢迎来到IT知识分享网。
尔云间 一个专门做科研的团队
原创 小果 生信果
欢迎点赞+收藏+关注[给你小心心]
相信大家都对R语言中的ggplot2包有所了解,那么你们知道怎么通过ggplot2绘制基因组的各染色体上的区间类型分布图嘛?今天小果就来给大家演示一下!
数据集准备
在绘制之前,我们首先要准备要导入的数据集,我们可以根据自己的情况将各染色体上进行“分区”,并汇总成一个table文件,我们一起来看看小果准备的数据文件吧!
在这个数据集中,从左向右分别代表染色体编号、区域起点、区域终点、染色体名称、区域类型、区域长度、区域号。怎么样,你看懂了嘛?
导入数据集以及数据处理
首先,让我们看一下这段代码的作用。这段代码可以读取一个名为”newGeneArea-15.txt”的数据文件,并绘制出柱状图,其中每个柱子代表一段基因区域,横坐标表示基因所在的染色体编号,纵坐标表示基因区域的长度,不同颜色的柱子代表不同的基因分段类别,例如重要性高、中、低等。
下面,我将一步一步地为大家解释这段代码的实现过程。
1. 导入ggplot2包
library(ggplot2)
library(ggplot2)
ggplot2是R语言中常用的可视化包,它提供了很多种图形类型和参数设置,可以用来绘制高质量的数据可视化图形哦。
2. 读取数据文件
a<-read.table(file = "newGeneArea-15.txt", header=F,quote="",sep="\t",stringsAsFactors=F)
3. 提取染色体号并加上”Chr”前缀
g<-sprintf("%s",unique(a[,4]))
这行代码使用unique函数选出数据中唯一的染色体号,然后使用sprintf函数将它们转换为字符串,并在每个字符串前加上”Chr”前缀。这样做是为了后续用这些字符串来标记x轴。
4. 计算基因区域长度
a[,6]<-a[,3]-a[,2]
这行代码将数据表a中的第6列设置为第3列减去第2列的差,进而得到每一个基因区域的长度。
5. 根据染色体号设置对应的横坐标上的位置列:
cssCopy code for(i in 1:length(a[,1])){ if(a[i,4] == "chr1"){ a[i,7]=1 }else if(a[i,4] == "chr2"){ a[i,7]=2 }else if(a[i,4] == "chr3"){ a[i,7]=3 }else if(a[i,4] == "chr4"){ a[i,7]=4 }else if(a[i,4] == "chr5"){ a[i,7]=5 } }
绘制图形
现在,我们已经完成了数据的预处理和整理,并且已经定义了我们要使用的图形元素和配色方案。现在,让我们用 ggplot2 包中的 ggplot 函数创建一个绘图对象,用于绘制我们的图形。我们将在此函数中指定数据框表a 作为数据源,同时指定在 x 和 y 轴上绘制的变量。
p <- ggplot(a, aes(x = a[,7], y = a[,6], fill = a[,5], group = a[,4])) + #指定变量 a[,7] 作为 x 轴变量,a[,6] 作为 y 轴变量 geom_bar(stat = "identity") + theme_bw() + #为绘图对象添加一个基本的白色背景 theme(panel.grid.major = element_blank(), #使用 element_blank 函数来隐藏 x 轴和 y 轴上的主要网格线 legend.position = c(0.9, 0.9), legend.title = element_blank()) + scale_fill_manual(values = colors) + #函数设置条形填充颜色 scale_x_continuous(breaks = c(1:5), labels = g) +labs(x = "", y = "") + #定义 x 轴的刻度值 scale_y_continuous(labels = c(0, "10MB", "20MB", "30MB")) #定义 y 轴的刻度值
在上述的代码中,我们使用 geom_bar 函数绘制条形图。我们使用 “identity” 参数,以使 ggplot2 包知道我们已经使用了预处理的条形高度。我们还使用 theme 函数来进一步定制绘图对象的外观。
好啦,我们今天的绘图工作已经基本完成,我们一起来和小果看一下绘制好的图长什么样子吧!
图片描述
在这个图中,主要向大家展示了拟南芥完整基因组的5条染色体上对应的“新区域”和老区域的位置分布图,其中蓝色的部分代表“老区域”,红色的部分代表“新区域”。同学们也可以根据自己想要展示的分区来进行设置数据集哦!
保存图像
现在,我们已经完成了图形的绘制。我们可以使用 R 中的任何绘图设备将图形保存到文件中。在这里,我们将使用 png 函数将图形保存为 PNG 文件。
# 输出图片 png(filename = "newGeneAreas111.jpg", type = "cairo", height = 800, width = 1100) print(p) dev.off()
完整代码:
library(ggplot2) # 读取数据 a <- read.table(file = "newGeneArea-15.txt", header = F, quote = "", sep = "\t", stringsAsFactors = F) # 提取染色体号 g <- sprintf("Chr%s", unique(a[, 4])) # 提取每段长度 a[, 6] <- a[, 3] - a[, 2] # 标记染色体号 for (i in 1:length(a[, 1])) { if (a[i, 4] == "chr1") { a[i, 7] = 1 } else if (a[i, 4] == "chr2") { a[i, 7] = 2 } else if (a[i, 4] == "chr3") { a[i, 7] = 3 } else if (a[i, 4] == "chr4") { a[i, 7] = 4 } else if (a[i, 4] == "chr5") { a[i, 7] = 5 } } # 设置颜色 colors <- c("lightsteelblue2", "orangered3") # 绘图 p <- ggplot(a, aes(x = a[, 7], y = a[, 6], fill = a[, 5], group = a[, 4])) + geom_bar(stat = "identity") + theme_bw() + theme(panel.grid.major = element_blank(), legend.position = c(0.9, 0.9), legend.title = element_blank()) + scale_fill_manual(values = colors) + scale_x_continuous(breaks = c(1:5), labels = g) + labs(x = "", y = "") + scale_y_continuous(labels = c(0, "10MB", "20MB", "30MB")) # 输出图片 png(filename = "newGeneAreas111.jpg", type = "cairo", height = 800, width = 1100) print(p) dev.off() svg(filename = "newGeneAreas111.svg", height = 7, width = 14) print(p) dev.off()
怎么样,今天的分区图表绘制你学会怎么用了吗!
更多ggplot绘图应用学习资源请大家移步小果专属云生信平台搜索更多资源哦!
小果专属云生信平台:云生信 – 学生物信息学 (biocloudservice.com)
ggplot绘制互作网络图:http://www.biocloudservice.com/703/703.php
云生信平台也有绘图专版的学习模块哦,快来找到你想学习的专属
生信人R语言学习必备
立刻拥有一个Rstudio账号
开启升级模式吧
(56线程,256G内存,个人存储1T)
往期代码:
【1】lncRNA的拷贝数变异下游相关分析
【2】R可视化:ggstatsplot包—科研界的美图秀秀
【3】随机森林算法用于分类预测和筛选诊断标志物
【4】基于本地Java版GSEA的输出结果整合多个通路到一张图
【5】基于岭回归模型和基因表达矩阵估算样本对药物反应的敏感性
【6】基于R包NMF对样本进行分型分析
【7】DALEX包用于探索、解释和评估模型;分析不同特征变量对响应变量的影响
【8】根据肿瘤突变负荷TMB进行KM生存分析寻找最佳的cutoff
【9】基于单样本富集分析算法评估组织中的免疫细胞浸润水平
【10】代码分享│什么?你还在用散点图来可视化数据之间的相关性
【11】代码分享│诊断列线图、校准曲线、决策曲线和临床影响曲线的构建
【12】代码分享│你了解基因的动态变化模式吗
【13】代码分享│生物信息分析之SCI热门图表-复杂热图
【14】代码分享│生物信息分析之SCI热门图表-火山图
【15】代码分享│生物信息分析之SCI热门图表-箱型图和小提琴图
【16】代码分享│深度学习-人工神经网络(ANN)的构建
【17】代码分享│R可视化:高分文章绘图之基于RCircos包的多类型圈图绘制
【18】代码分享│R可视化:基因与功能之间的关系–GO功能富集网络图绘制
【19】代码分享│生物信息分析之SCI热门图表—KM曲线和tROC曲线
【20】代码分享│R可视化:肿瘤预后模型之Cox回归分析后用R语言绘制森林图
【21】代码分享│生物信息分析之SCI热门图表—相关性热图和散点图
【22】代码分享│生信分析之R语言分析相关性及可视化的N种风格
【23】代码分享│TCGA数据获取有困难,不会预处理,学习起来
【24】代码分享│机器学习-支持向量机递归特征消除(SVM-RFE)的构建
【25】代码分享│R可视化:对两个矩阵进行相关性可视化分析
【26】GEO数据库多数据集差异分析整合利器RRA,再也不用纠结去除批次效应
【27】你与生信大佬的距离,只差2分钟搞定预后模型构建和性能评估
【28】9+SCI纯生信,模型构建中的“流量明星”,你不得不知的LASSO
【29】手把手教你画美观大气的lasso回归模型图,为你的SCI增砖添瓦
【30】R可视化:clusterProfiler包做组间比较GO富集图
【31】代码分享|R可视化:复杂热图绘制技巧之热图中添加柱状图
【32】代码分享——基于基因突变信息分析肿瘤突变负荷
【33】代码分享│富集不到想要的通路?别放弃呀,试试GSEA
【34】代码分享│还在用PCA做降维聚类吗?最强降维模型tSNE–你值得拥有
【35】代码分享│GSVA:原来功能通路也能做差异分析!
【36】代码分享│Slingshot:你不知道的单细胞拟时序分析还有它
【37】基于基因功能注释信息挖掘关键作用基因
【38】基于癌症分类预测的标志物特征提取的SVM-RFE分析代码
【39】依据表型数据基于无监督聚类算法对研究群体进行分层聚类分析
【40】基于稳健排序整合算法对多数据集进行整合及可视化
【41】基于基因表达谱估算样本免疫基质评分和肿瘤纯度
【42】自动化绘制LASSO算法回归模型图
【43】用于临床诊断和临床决策影响的DCA分析
【44】基于样本预后生存信息和临床因素用于评价不同模型的一致性指数软件
【45】用于探索、解释和评估模型的DALEX残差分析软件
【46】基于细菌群落功能丰度结果进行差异功能分析及可视化
【47】基于基因差异分析结果绘制其在染色体上的分布
【48】利用逐步回归法筛选特征基因构建Cox风险模型分析
【49】基于Immune Subtype Classifier进行肿瘤免疫亚型分类
【50】不同物种之间的同源基因名称转换分析
【51】基于逐步多因素cox回归筛选预后标记基因并构建风险评分模型
【52】基于表达信息挖掘与关注基因密切相关的基因
【53】基因组学基因名称修正分析
【54】基于Spearman算法构建关联网络
【55】基于线性建模方法对代谢组和转录组数据整合分析
【56】基于lasso回归模型方法筛选特征基因
【57】基于线性建模方法对代谢组和转录组数据整合分析
【58】基于参数型经验贝叶斯算法和支持向量机(SVM)筛选疾病亚型特征基因
【59】基于LDA(线性判别分析)算法的微生物biomarker的筛选
【60】基于R包xCell计算64种免疫细胞相对含量及下游可视化
【61】基于甲基化数据评估肿瘤纯度及下游可视化
【62】基于DiffCorr包识别不同表型下的差异共表达关系对
【63】基于逆累计分布函数识别显著偏差通路
【64】基于差异基因对通路的影响挖掘关键通路
【65】基于高通量数据的样本相似性分析
需要以上代码请私信小果哦~
“生信果”,生信入门、R语言、生信图解读与绘制、软件操作、代码复现、生信硬核知识技能、服务器、生物信息学的教程,以及基于R的分析和可视化等原创内容,一起见证小白和大佬的成长。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/108477.html