R语言绘图 | 冲击堆积柱状图和堆积状图绘制教程

文摘   2024-12-18 07:30   云南  

一边学习,一边总结,一边分享!

由于微信改版,一直有同学反映。存在长时间接收不到公众号的推文。那么请跟随以下步骤,将小杜的生信筆記设置为星标,不错过每一条推文教程。

欢迎关注《小杜的生信笔记》!!

如何加入社群

小杜的生信笔记仅有微信社群

1. 微信群:付费社群。添加小杜好友,加友请知:加友须知!!,加入社群请查看小杜的生信笔记付费加友入群声明

入群声明

2. 小杜个人微信:若你有好的教程或想法,可添加小杜个人微信。值得注意的是,小杜个人微信并不支持免费咨询长时间咨询,但支持小问题2-3个免费咨询。

小杜微信:

知识星球:

本期教程图形

后台回复关键词获得数据和代码:20241218

前言

今天白天有同学在咨询,绘制的冲击堆积柱状图的绘图代码,以及数据。我们在前期的教程中,已经有推送过堆积柱状图的教程

其实,本质是不变的,就是需要三列数据即可。使用ggplotggalluvial包完成。

Code

  1. 加载所需R包
library(ggplot2)
library(ggalluvial)
library(tidyverse)
  1. 加载数据
> data[1:5,1:3]
Vegetation_Year OTU_ID Relative_Abundance
1 YM Ascomycota 75
2 YM Mortierellomycota 15
3 YM Basidiomycota 5
4 YM Mucoromycota 2
5 YM Glomeromycota 1
  1. 自定义颜色
# 定义自然风格配色方案
nature_colors <- c(
"Unclassified" = "#A9A9A9", "Other" = "#696969", "Entorrhizomycota" = "#A8E6CF",
"Calcarisporiellomycota" = "#D291BC", "Rozellomycota" = "#FFAAA5", "Kickxellomycota" = "#FF8B94",
"Chytridiomycota" = "#FFD3B6", "Glomeromycota" = "#6B5B95", "Mucoromycota" = "#FF847C",
"Basidiomycota" = "#B0C4DE", "Mortierellomycota" = "#FFF176", "Ascomycota" = "#80CBC4"
)
  1. 绘制堆积状图
ggplot(data, aes(x = Vegetation_Year, y = Relative_Abundance, fill = OTU_ID)) +
geom_bar(stat = "identity", position = "fill", width = 0.8,
color = "black",
size = 0.1) +
scale_fill_manual(values = nature_colors) +
labs(x = "Vegetation restoration (Year)",
y = "Relative abundance (%)",
fill = "OTU.ID") +
#scale_y_continuous(labels = scales::percent_format()) +
scale_y_continuous(expand = c(0, 0))+
#scale_y_discrete(expand = c(0, 0)) +
theme_bw() +
theme(
axis.text = element_text(color = "black"),
axis.title = element_text(face = "bold"),
legend.title = element_text(face = "bold"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.position = "right"
)
ggsave("./output/fig1.jpg",width = 6, height = 4)
  1. 绘制冲击堆积柱状图
ggplot(data, 
aes(x = Vegetation_Year,
y = Relative_Abundance,
fill = OTU_ID,
stratum = OTU_ID,
alluvium = OTU_ID)) +
geom_stratum(color= NA,width=0.6,size=0.5)+
geom_flow(alpha = 0.65) +
coord_cartesian(ylim = c(0,102.5),
expand = T,clip = 'off')+
scale_fill_manual(values = nature_colors) +
labs(x = "Vegetation restoration (Year)",
y = "Relative abundance (%)",
fill = "OTU.ID") +
scale_y_continuous(expand = c(0, 0)) +
#scale_y_discrete(expand = c(0, 0)) +
# scale_x_discrete(expand = c(0, 0)) +
theme_bw() +
theme(
# 坐标轴标题字体大小
axis.title.x = element_text(size = 12, face = "bold"), # X轴标题
axis.title.y = element_text(size = 12, face = "bold"), # Y轴标题

# 坐标轴刻度字体大小
axis.text.x = element_text(size = 10, color = "black"), # X轴刻度
axis.text.y = element_text(size = 10, color = "black"), # Y轴刻度

# 图例标题和标签字体大小
legend.title = element_text(size = 10, face = "bold"), # 图例标题
legend.text = element_text(size = 10), # 图例标签

# 图形标题(如果需要,可以添加)
#plot.title = element_text(size = 18, face = "bold", hjust = 0.5), # 图形标题

# 面板网格与边框
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_rect(fill = NA, color = "black", size = 0.4), # 添加边框

# 图形边距
plot.margin = unit(c(1, 1, 1, 1), "lines")
)

ggsave("./output/fig2.jpg",width = 6, height = 4)

后台回复关键词获得数据和代码:20241218


若我们的教程对你有所帮助,请点赞+收藏+转发,大家的支持是我们更新的动力!!

往期部分文章

1. 最全WGCNA教程(替换数据即可出全部结果与图形)

推荐大家购买最新的教程,若是已经购买以前WGNCA教程的同学,可以在对应教程留言,即可获得最新的教程。(注:此教程也仅基于自己理解,不仅局限于此,难免有不恰当地方,请结合自己需求,进行改动。)


2. 精美图形绘制教程

3. 转录组分析教程

4. 转录组下游分析

小杜的生信筆記 ,主要发表或收录生物信息学教程,以及基于R分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!


小杜的生信筆記
小杜的生信筆記,生信小白,初来乍到请多指教。 主要学习分享,转录组数据分析,基于R语言数据分析和绘制图片等,以及相关文献的分享。
 最新文章