学习的源头在上图,自己稍微做了点修改
library(reshape2) # 重塑数据框的包,可以实现长数据和宽数据之间的转化
# 加载ggalluvial包(绘图本图所用关键R包),基于ggplot2的ggalluvial包可用来绘制冲击图
library(ggalluvial)
library(ggsci) # ggsci包含期刊或软件的经典配色,可用于ggplot2()配色
setwd("C:\\Users\\Administrator\\Desktop")
# 读取绘制数据,行为菌的名称,列为不同盐度,表中数据为菌的相对丰度
d1e0 <- read.table("ProClass.txt", sep = "\t", header = TRUE) # 示例数据可在GitHub上获取
# 将宽数据拉长,转化后"自变量"列为variable,代表梯度不同的盐度,"因变量"列为Value,代表菌的相对丰度
d1e = as.data.frame(melt(d1e0, id.vars = c("Phylum"))) # id.vars=c()用于指定要保留的字段
# 预设渐变色并绘制冲击图
taxcol <- c("#64A4CC", "#9CCEE3", "#C7E5DB", "#ECF6C8", "#FEEDAA",
"#FDC980", "#F89D59", "#E75B3A", "#D7191C")
p1e <- ggplot(data=d1e,aes(x = variable, y = value, alluvium = Phylum)) +
geom_alluvium(aes(fill = Phylum), alpha = 1) +
scale_fill_manual(values = taxcol) +
scale_x_discrete(breaks = c("B1W4_3", "B1W6_3", "B1W8_3", "B1W10_3"),
labels = c("W4", "W6", "W8", "W10")) +
theme_minimal() +
theme(panel.grid.minor = element_blank(),
panel.grid.major = element_blank(),
axis.ticks.x = element_line(color = "black", size = 0.5), # 调整刻度线的颜色和大小
axis.ticks.length = unit(0.3, "cm"), # 调整刻度线长度
plot.margin = unit(c(1 , 1, 1, 1), "cm")) + # 调整整个图形的边距
xlab("Growth and development period") +
ylab("Relative abundance (%)")
p1e
ggsave("冲击图.pdf", p1e, width = 8, height = 5)
-
library(reshape2)
: 加载reshape2
包,这个包提供了一些函数,用于重塑数据框,例如将宽数据转换为长数据。 -
library(ggalluvial)
: 加载ggalluvial
包,它是基于ggplot2
的,主要用于绘制冲击图(Alluvial diagrams)。 -
library(ggsci)
: 加载ggsci
包。这个包提供了一系列的配色方案,这些配色方案来自于各种知名的学术期刊和软件。 -
setwd("C:\\Users\\Administrator\\Desktop")
: 设置工作目录为桌面。 -
d1e0 <- read.table("ProClass.txt", sep = "\t", header = TRUE)
: 从桌面读取一个名为"ProClass.txt"的文件,该文件中的字段是用制表符(tab)分隔的,并且文件具有标题行。 -
d1e = as.data.frame(melt(d1e0, id.vars = c("Phylum")))
: 使用melt
函数将宽数据d1e0
转化为长数据。这里保持"Phylum"列不变,其它的列都会被转换为两列,一列名为"variable",一列名为"value"。 -
taxcol
部分定义了一个颜色向量。 -
p1e <- ggplot(...)
: 使用ggplot
函数创建一个图形对象p1e
。data=d1e
:使用前面转化后的数据d1e
。aes(x = variable, y = value, alluvium = Phylum)
: 映射数据的字段到图形的各个元素。geom_alluvium(aes(fill = Phylum), alpha = 1)
: 添加冲击层到图,使用"Phylum"列的值来决定其填充颜色。scale_fill_manual(values = taxcol)
: 手动设置填充颜色。scale_x_discrete(...)
: 对x轴进行调整。theme_minimal()
: 使用简洁的主题。- 后面的
theme(...)
函数进一步自定义了图形的各种元素,例如网格线、刻度线的颜色、大小等。 xlab(...)
和ylab(...)
函数分别设置x轴和y轴的标签。
-
p1e
: 这一行代码将会打印并展示图形。 -
ggsave("冲击图.pdf", p1e, width = 8, height = 5)
: 使用ggsave
函数将图形保存为PDF文件,文件名为"冲击图.pdf",指定了图形的宽和高。