一边学习,一边总结,一边分享!
由于微信改版,一直有同学反映。存在长时间接收不到公众号的推文。那么请跟随以下步骤,将小杜的生信筆記设置为星标,不错过每一条推文教程。
欢迎关注《小杜的生信笔记》!!
如何加入社群
小杜的生信笔记
,仅有微信社群。
1. 微信群:付费社群。添加小杜好友,加友请知:加友须知!!,加入社群请查看小杜的生信笔记付费加友入群声明。
2. 小杜个人微信:若你有好的教程或想法,可添加小杜个人微信。值得注意的是,小杜个人微信并不支持免费咨询长时间咨询,但支持小问题2-3个免费咨询。
小杜微信:
知识星球:
本期教程图形
在后台回复关键词获得代码:
20241223
。
本期教程
关于的《R语言系统发育树专栏》
基于R语言绘制系统发育树,关于这块的内容自己一直想学习(PS:确实是学习),在自己做的这块中很少使用到类似的教程。但对于自己来说,不是一直不适用,只是使用的概率比较少而已。我想很多的同学也会存在与我自己一样的情况,因此,自己一边学习,一边记录,一边分享吧。对于使用ggtree、ggtreeExtra包,或是使用其他可视化软件绘制进化树的教程,在网上会有很多的教程(PS:只要你愿意搜索)。我们在自己学习过程中,也会引用各位博主大佬分享的教程脚本,大家一起学习。
Code
加载所需R包
##'@系统发育树专栏(三)
##'
##'@学习整理:小杜的生信笔记
##'
##'@参考来源:ggtreeExtra包
##'
##'@date:23/12/2024
##加载R包
library(ggtree)
library(ggtreeExtra)
library(ggplot2)
library(ggstar)
library(MicrobiotaProcess)
library(ggnewscale)
library(grid)
导入数据
alltax <- read.csv("./Inputdata//all_stain_taxonomy.csv")
linktab <- read.csv("./Inputdata/Interaction_link_tab.csv")
weighttab <- read.csv("./Inputdata/Interaction_weight.csv")
tippoint <- read.csv("./Inputdata/stain_tippoint.csv")
BGCsda <- read.csv("./Inputdata/BGCs_heatmap.csv")
> head(alltax)
Kindom Phylum Class Order
1 Bacteria Proteobacteria Alphaproteobacteria Sphingomonadales
2 Bacteria Proteobacteria Alphaproteobacteria Rhizobiales
3 Bacteria Proteobacteria Alphaproteobacteria Rhizobiales
4 Bacteria Proteobacteria Alphaproteobacteria Rhizobiales
5 Bacteria Proteobacteria Betaproteobacteria Burkholderiales
6 Bacteria Proteobacteria Gammaproteobacteria Pseudomonadales
Family Genus Isolation
1 Sphingomonadaceae Sphingomonas Leaf11
2 Methylobacteriaceae Methylobacterium Leaf121
3 Methylobacteriaceae Methylobacterium Leaf122
4 Methylobacteriaceae Methylobacterium Leaf125
5 Oxalobacteraceae Duganella Leaf126
6 Pseudomonadaceae Pseudomonas Leaf127
> head(linktab)
Inhibitor Sensitive Interaction
1 s__Leaf11 s__Leaf294 weak
2 s__Leaf11 s__Leaf326 strong
3 s__Leaf11 s__Leaf341 weak
4 s__Leaf11 s__Leaf344 weak
5 s__Leaf11 s__Leaf347 weak
6 s__Leaf11 s__Leaf351 weak
> head(weighttab)
Strain Number value
1 s__Leaf182 Inhibitor Strong 32
2 s__Leaf98 Inhibitor Strong 17
3 s__Leaf434 Inhibitor Strong 6
4 s__Leaf58 Inhibitor Strong 4
5 s__Leaf15 Inhibitor Strong 10
6 s__Leaf49 Inhibitor Strong 9
> head(tippoint)
Isolation Taxa Level names
1 s__Leaf13 Firmicutes Phylum 13
2 s__Leaf137 Actinobacteria Phylum 137
3 s__Leaf141 Actinobacteria Phylum 141
4 s__Leaf145 Actinobacteria Phylum 145
5 s__Leaf154 Actinobacteria Phylum 154
6 s__Leaf161 Actinobacteria Phylum 161
> head(BGCsda)
Strain BGCs Count
1 s__Leaf324 modular.PKS 0.000000
2 s__Leaf225 modular.PKS 1.000000
3 s__Leaf233 modular.PKS 1.584963
4 s__Leaf247 modular.PKS 1.000000
5 s__Leaf258 modular.PKS 1.000000
6 s__Leaf278 modular.PKS 1.000000
固定因素
##'@固定因素
tippoint$Taxa <- factor(tippoint$Taxa,
levels=c("Actinobacteria",
"Bacteroidetes",
"Firmicutes",
"Deinococcus-Thermus",
"Alphaproteobacteria",
"Betaproteobacteria",
"Gammaproteobacteria"
)
)
#删除 Isolation 列中特定的字符串
tippoint$names <- gsub("s__Leaf","",tippoint$Isolation)
BGCsda$BGCs <- factor(BGCsda$BGCs,
levels=c("modular.PKS",
"modular.PKS.NRPS.hybrid",
"non_modular.PKS", "NRPS",
"RiPP",
"Quorum.sensing",
"terpene",
"other"
)
)
BGCsda$Count <- log2(BGCsda$Count+1)
trda <- convert_to_treedata(alltax)
绘制基础图
p <- ggtree(trda,
layout="inward_circular", # 内向圆形布局
size=0.2, # 树枝线宽
xlim=c(18, NA) # 横轴范围,从 18 开始
)
# 将外部数据 tippoint 添加到系统发育树
p <- p %<+% tippoint
ggsave("./output_fig/fig01.jpg",width = 6, height = 6)
添加颜色
p1 <- p +
geom_tippoint(
mapping = aes(
color = Taxa, # 根据 `Taxa` 设置颜色
shape = Level # 根据 `Level` 设置形状
),
size = 1, # 点大小
alpha = 0.8 # 点透明度
) +
# 手动指定颜色映射,并自定义图例
scale_color_manual(
values = c("#EF3B2C", "#1D91C0", "#FEB24C", "grey60",
"#7FBC41", "#4D9221", "#276419"), # 颜色设置
guide = guide_legend( # 自定义图例
keywidth = 0.5, # 图例键宽度
keyheight = 0.5, # 图例键高度
order = 2, # 图例顺序
override.aes = list( # 覆盖图例项样式
shape = c(
"Actinobacteria" = 20,
"Bacteroidetes" = 20,
"Firmicutes" = 20,
"Deinococcus-Thermus" = 20,
"Alphaproteobacteria" = 18,
"Betaproteobacteria" = 18,
"Gammaproteobacteria" = 18
),
size = 2 # 设置图例点大小为 2
),
na.translate = TRUE # 如果有 NA 值,显示该类别的图例项
)
) +
# 设置点形状映射,并隐藏形状图例
scale_shape_manual(
values = c("Phylum" = 20, "Class" = 18), # 设置不同 `Level` 对应的形状
guide = "none" # 不显示形状图例
)
添加links
p2 <- p1 +
new_scale_color() + # 重置颜色映射
# 添加物种间的交互作用链接
geom_taxalink(
data = linktab, # 数据框,包含交互作用的物种对
mapping = aes(
taxa1 = Inhibitor, # 第一个物种(抑制者)
taxa2 = Sensitive, # 第二个物种(敏感者)
color = Interaction # 交互作用类型,决定颜色
),
alpha = 0.6, # 线条透明度
offset = 0.1, # 线条偏移量
size = 0.15, # 线条大小
ncp = 10, # 线条的曲线数量
hratio = 1, # 水平比例
arrow = grid::arrow(length = unit(0.005, "npc")) # 添加箭头,设置箭头长度
) +
# 手动设置颜色,并自定义图例
scale_colour_manual(
values = c("chocolate2", "#3690C0", "#009E73"), # 自定义颜色
guide = guide_legend( # 图例的设置
keywidth = 0.8, # 图例项的宽度
keyheight = 0.5, # 图例项的高度
order = 1, # 图例显示顺序
override.aes = list( # 重写图例的显示方式
alpha = 1, # 设置图例中颜色的透明度为完全不透明
size = 0.5 # 设置图例项的大小
)
)
)
p3 <- p2 +
##'@添加星形标记
geom_fruit(
data = BGCsda, # 数据框,包含基因组区域(BGCs)信息
geom = geom_star, # 使用星形标记(geom_star)表示数据点
mapping = aes(
y = Strain, # 设置y轴为Strain(不同的菌株)
x = BGCs, # 设置x轴为BGCs(基因组区域类型)
size = Count, # 根据Count设置星形大小
fill = BGCs # 根据BGCs填充颜色
),
starshape = 13, # 设置星形的形状(13表示五角星)
starstroke = 0, # 设置星形边框的粗细(0表示无边框)
offset = -0.9, # 星形标记的偏移量
pwidth = 1.4, # 设置星形的宽度
grid.params = list(linetype = 3) # 设置网格线类型(3表示虚线)
)+
##'@调整星形大小
scale_size_continuous(
range = c(0, 2), # 设置星形大小的范围
limits = c(sort(BGCsda$Count)[2], max(BGCsda$Count)), # 设置大小的取值范围(排除最小的Count值)
breaks = c(1, 2, 3), # 设置图例中的断点
name = bquote(paste(Log[2], "(", .("Count+1"), ")")), # 图例标题(对Count进行log2变换)
guide = guide_legend(
keywidth = 0.4, # 图例项宽度
keyheight = 0.4, # 图例项高度
order = 4, # 图例显示顺序
override.aes = list( # 重写图例显示方式
starstroke = 0.3 # 为图例项添加星形边框
)
)
)
+
scale_fill_manual(
values=c("#66C2A5", "#FC8D62", "#8DA0CB", "#E78AC3",
"#A6D854", "#FFD92F", "#E5C494", "#B3B3B3"),
guide=guide_legend(keywidth = 0.4, keyheight = 0.4, order=3)
)
p3
ggsave("./output_fig/fig04.jpg",height = 6, width = 8,plot = p3)
p4 <- p3 +
##'@该函数用于为树的每个叶子(tip)添加标签
geom_tiplab(
mapping = aes(
label = names # 映射标签数据,`names` 表示树枝的名称
),
align = TRUE, # 对齐标签,通常与树枝平行
size = 1, # 标签字体大小
linetype = NA, # 不绘制线条(默认线条连接标签和树枝)
offset = 9.3 # 设置标签的偏移量,控制标签与树枝的距离
)
p5 <- p4 +
geom_fruit(
data = weighttab, # 使用的额外数据框,包含条形图需要的数据
geom = geom_bar, # 使用条形图几何对象
mapping = aes(
x = value, # 将 `value` 映射到 x 轴
y = Strain, # 将 `Strain` 映射到 y 轴
fill = Number # 使用 `Number` 列的值来填充颜色
),
stat = "identity", # 使用原始数据,不做统计变换
orientation = "y", # 设置条形图的方向为水平条形图
offset = 0.48, # 设置条形图的位置偏移量
pwidth = 2, # 设置条形的宽度
axis.params = list( # 设置轴的相关参数
axis = "x", # 设置使用 x 轴
text.angle = -45, # 设置轴标签的角度
hjust = 0, # 水平对齐方式
vjust = 0.5, # 垂直对齐方式
nbreak = 4 # 轴的刻度数量
)
)+
scale_fill_manual(
name = "Number of interactions", # 设置图例的标题
values = c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3"), # 设置颜色值
guide = guide_legend(keywidth = 0.5, keyheight = 0.5, order = 5) # 设置图例样式及顺序
) +
theme(
legend.background=element_rect(fill=NA),
legend.title=element_text(size=6.5),
legend.text=element_text(size=5),
legend.spacing.y = unit(0.02, "cm"),
legend.margin=margin(0.1, 0.9, 0.1,-0.9, unit="cm"),
legend.box.margin=margin(0.1, 0.9, 0.1, -0.9, unit="cm"),
plot.margin = unit(c(-1.2, -1.2, -1.2, 0.1),"cm")
)
p5
在后台回复关键词获得代码:
20241223
。
若我们的教程对你有所帮助,请点赞+收藏+转发,大家的支持是我们更新的动力!!
往期部分文章
1. 最全WGCNA教程(替换数据即可出全部结果与图形)
推荐大家购买最新的教程,若是已经购买以前WGNCA教程的同学,可以在对应教程留言,即可获得最新的教程。(注:此教程也仅基于自己理解,不仅局限于此,难免有不恰当地方,请结合自己需求,进行改动。)
2. 精美图形绘制教程
3. 转录组分析教程
4. 转录组下游分析
小杜的生信筆記 ,主要发表或收录生物信息学教程,以及基于R分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!