library(vegan)
## 载入需要的程辑包:permute
## 载入需要的程辑包:lattice
## This is vegan 2.6-4
library(magrittr)
library(ggplot2)
library(dplyr)
##
## 载入程辑包:'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(readr)
mds ObjectWe have provided the mds object after completing the
cmdscale calculation, which can be found in
mds.RData.
load("mds.RData")
Each material’s Species and subpopulation information can be found in
Supplementary Table 4 or acc_group.csv.
acc_group <- read.csv("acc_group.csv", header = TRUE)
acc_group <- acc_group %>% mutate(K15.Group = coalesce(K15.Group, Species))
Define the colors to be used in the plots.
my_color_pal <- c("#A6CEE3", "#1F78B4", #Obar/Ogla
"#89288F", "#9983BD", "#272E6A", "#8A9FD1", #GJ-temp/subtrp/trop1/2
"#0C727C", #cB
"#FDBF6F", "#FF7F00", # cA1/2
"#B2DF8A", "#33A02C", "#3BBCA8", #XI-1A/1B1/1B2
"#6A3D9A", "#E6C2DC", #XI-2A/2B
"#F37B7D", "#ee9f6a", "#B15928") #XI-3A/3B1/3B2
# Convert the MDS points to a data frame
norgPAV.d.bray.mds.df <- norgPAV.d.bray.mds$points %>% data.frame()
# Add Species, Accession, and K15 Group information to the MDS data frame
norgPAV.d.bray.mds.df$Species <- acc_group$Species
norgPAV.d.bray.mds.df$Accession <- acc_group$Accession
norgPAV.d.bray.mds.df$K15 <- acc_group$K15.Group
# Parse the K15 factor with specified levels
norgPAV.d.bray.mds.df$K15 <- parse_factor(
norgPAV.d.bray.mds.df$K15,
levels = c(
"O. barthii",
"O. glaberrima",
"GJ-adm",
"GJ-temp",
"GJ-subtrp",
"GJ-trop",
"GJ-trop1",
"GJ-trop2",
"cB",
"admix",
"cA-adm",
"cA1",
"cA2",
"XI-adm",
"XI-1",
"XI-1A",
"XI-1B",
"XI-1B1",
"XI-1B2",
"XI-2",
"XI-2A",
"XI-2B",
"XI-3",
"XI-3A",
"XI-3B",
"XI-3B1",
"XI-3B2"
))
# Create labels for the MDS axes with percentage of variance explained
norgPAV.d.bray.mds.xlab <- paste("MDS Component 1 (",
format(norgPAV.d.bray.mds$eig[1] /
sum(norgPAV.d.bray.mds$eig) * 100,
digits = 4),
"%)",
sep = "")
norgPAV.d.bray.mds.ylab <- paste("MDS Component 2 (",
format(norgPAV.d.bray.mds$eig[2] /
sum(norgPAV.d.bray.mds$eig) * 100,
digits = 4),
"%)",
sep = "")
# Define the K15 groups to include in the plot
select_k15 <- c("O. barthii", "O. glaberrima",
"GJ-temp","GJ-subtrp","GJ-trop1","GJ-trop2",
"cB","cA1","cA2",
"XI-1A","XI-1B1","XI-1B2","XI-2A","XI-2B",
"XI-3A","XI-3B1","XI-3B2")
# Create the MDS plot for all accessions
mds.all.k15 <- norgPAV.d.bray.mds.df %>% filter(K15 %in% select_k15) %>%
ggplot(aes(X1,X2)) + geom_point(aes(color = K15), alpha = 0.7) +
geom_hline(yintercept = 0, linetype = 4) +
geom_vline(xintercept = 0, linetype = 4) +
theme_bw() +
labs(x=norgPAV.d.bray.mds.xlab,
y=norgPAV.d.bray.mds.ylab) +
scale_color_manual(values = my_color_pal)
mds.all.k15
# Extract MDS points for African populations
norgPAV.african.d.bray.mds.df <- norgPAV.african.d.bray.mds$points %>% data.frame()
# Filter the acc_group for African species
acc_group.african <- acc_group %>% filter(Species %in% c("O. glaberrima", "O. barthii"))
# Add Species, Accession, and K15 Group information to the African MDS data frame
norgPAV.african.d.bray.mds.df$Species <- acc_group.african$Species
norgPAV.african.d.bray.mds.df$Accession <- acc_group.african$Accession
norgPAV.african.d.bray.mds.df$K15 <- acc_group.african$K15.Group
# Create labels for the MDS axes with percentage of variance explained for African populations
norgPAV.african.d.bray.mds.xlab <- paste("MDS Component 1 (",
format(norgPAV.african.d.bray.mds$eig[1] /
sum(norgPAV.african.d.bray.mds$eig) * 100,
digits = 4),
"%)",
sep = "")
norgPAV.african.d.bray.mds.ylab <- paste("MDS Component 2 (",
format(norgPAV.african.d.bray.mds$eig[2] /
sum(norgPAV.african.d.bray.mds$eig) * 100,
digits = 4),
"%)",
sep = "")
# Create the MDS plot for African populations
mds.africa <- norgPAV.african.d.bray.mds.df %>% ggplot(aes(X1, X2)) +
geom_point(aes(color = Species), alpha = 0.7) +
geom_hline(yintercept = 0, linetype = 4) +
geom_vline(xintercept = 0, linetype = 4) +
theme_bw() +
labs(x=norgPAV.african.d.bray.mds.xlab,
y=norgPAV.african.d.bray.mds.ylab) +
scale_color_manual(values = my_color_pal[1:2])
mds.africa
norgPAV.asian.d.bray.mds.df <- norgPAV.asian.d.bray.mds$points %>% data.frame()
acc_group.asian <- acc_group %>% filter(Species %in% c("O. sativa"))
norgPAV.asian.d.bray.mds.df$Species <- acc_group.asian$Species
norgPAV.asian.d.bray.mds.df$Accession <- acc_group.asian$Accession
norgPAV.asian.d.bray.mds.df$K15 <- acc_group.asian$K15.Group
norgPAV.asian.d.bray.mds.xlab <- paste("MDS Component 1 (",
format(norgPAV.asian.d.bray.mds$eig[1] /
sum(norgPAV.asian.d.bray.mds$eig) * 100,
digits = 4),
"%)",
sep = "")
norgPAV.asian.d.bray.mds.ylab <- paste("MDS Component 2 (",
format(norgPAV.asian.d.bray.mds$eig[2] /
sum(norgPAV.asian.d.bray.mds$eig) * 100,
digits = 4),
"%)",
sep = "")
norgPAV.asian.d.bray.mds.df$K15 <- parse_factor(
norgPAV.asian.d.bray.mds.df$K15,
levels = c(
"GJ-adm",
"GJ-temp",
"GJ-subtrp",
"GJ-trop",
"GJ-trop1",
"GJ-trop2",
"cB",
"admix",
"cA-adm",
"cA1",
"cA2",
"XI-adm",
"XI-1",
"XI-1A",
"XI-1B",
"XI-1B1",
"XI-1B2",
"XI-2",
"XI-2A",
"XI-2B",
"XI-3",
"XI-3A",
"XI-3B",
"XI-3B1",
"XI-3B2"
))
mds.asian <- norgPAV.asian.d.bray.mds.df %>% filter(K15 %in% select_k15) %>% ggplot(aes(X1, X2)) +
geom_point(aes(color = K15), alpha = 0.7) +
geom_hline(yintercept = 0, linetype = 4) +
geom_vline(xintercept = 0, linetype = 4) +
theme_bw() +
labs(x=norgPAV.asian.d.bray.mds.xlab,
y=norgPAV.asian.d.bray.mds.ylab) +
scale_color_manual(values = my_color_pal[3:17])
mds.asian
norgPAV.GJ.d.bray.mds.df <- norgPAV.GJ.d.bray.mds$points %>% data.frame()
acc_group.GJ <- acc_group %>% filter(grepl("GJ", K9.Group))
norgPAV.GJ.d.bray.mds.df$Species <- acc_group.GJ$Species
norgPAV.GJ.d.bray.mds.df$Accession <- acc_group.GJ$Accession
norgPAV.GJ.d.bray.mds.df$K15 <- acc_group.GJ$K15.Group
norgPAV.GJ.d.bray.mds.xlab <- paste("MDS Component 1 (",
format(norgPAV.GJ.d.bray.mds$eig[1] /
sum(norgPAV.GJ.d.bray.mds$eig) * 100,
digits = 4),
"%)",
sep = "")
norgPAV.GJ.d.bray.mds.ylab <- paste("MDS Component 2 (",
format(norgPAV.GJ.d.bray.mds$eig[2] /
sum(norgPAV.GJ.d.bray.mds$eig) * 100,
digits = 4),
"%)",
sep = "")
norgPAV.GJ.d.bray.mds.df$K15 <- parse_factor(
norgPAV.GJ.d.bray.mds.df$K15,
levels = c(
"GJ-adm",
"GJ-temp",
"GJ-subtrp",
"GJ-trop",
"GJ-trop1",
"GJ-trop2",
"cB",
"admix",
"cA-adm",
"cA1",
"cA2",
"XI-adm",
"XI-1",
"XI-1A",
"XI-1B",
"XI-1B1",
"XI-1B2",
"XI-2",
"XI-2A",
"XI-2B",
"XI-3",
"XI-3A",
"XI-3B",
"XI-3B1",
"XI-3B2"
))
mds.GJ <- norgPAV.GJ.d.bray.mds.df %>% filter(K15 %in% select_k15) %>% ggplot(aes(X1, X2)) +
geom_point(aes(color = K15), alpha = 0.7) +
geom_hline(yintercept = 0, linetype = 4) +
geom_vline(xintercept = 0, linetype = 4) +
theme_bw() +
labs(x=norgPAV.GJ.d.bray.mds.xlab,
y=norgPAV.GJ.d.bray.mds.ylab) +
scale_color_manual(values = my_color_pal[3:6])
mds.GJ
norgPAV.XI.d.bray.mds.df <- norgPAV.XI.d.bray.mds$points %>% data.frame()
acc_group.XI <- acc_group %>% filter(grepl("XI", K9.Group))
norgPAV.XI.d.bray.mds.df$Species <- acc_group.XI$Species
norgPAV.XI.d.bray.mds.df$Accession <- acc_group.XI$Accession
norgPAV.XI.d.bray.mds.df$K15 <- acc_group.XI$K15.Group
norgPAV.XI.d.bray.mds.xlab <- paste("MDS Component 1 (",
format(norgPAV.XI.d.bray.mds$eig[1] /
sum(norgPAV.XI.d.bray.mds$eig) * 100,
digits = 4),
"%)",
sep = "")
norgPAV.XI.d.bray.mds.ylab <- paste("MDS Component 2 (",
format(norgPAV.XI.d.bray.mds$eig[2] /
sum(norgPAV.XI.d.bray.mds$eig) * 100,
digits = 4),
"%)",
sep = "")
norgPAV.XI.d.bray.mds.df$K15 <- parse_factor(
norgPAV.XI.d.bray.mds.df$K15,
levels = c(
"GJ-adm",
"GJ-temp",
"GJ-subtrp",
"GJ-trop",
"GJ-trop1",
"GJ-trop2",
"cB",
"admix",
"cA-adm",
"cA1",
"cA2",
"XI-adm",
"XI-1",
"XI-1A",
"XI-1B",
"XI-1B1",
"XI-1B2",
"XI-2",
"XI-2A",
"XI-2B",
"XI-3",
"XI-3A",
"XI-3B",
"XI-3B1",
"XI-3B2"
))
mds.GJ <- norgPAV.XI.d.bray.mds.df %>% filter(K15 %in% select_k15) %>% ggplot(aes(X1, X2)) +
geom_point(aes(color = K15), alpha = 0.7) +
geom_hline(yintercept = 0, linetype = 4) +
geom_vline(xintercept = 0, linetype = 4) +
theme_bw() +
labs(x=norgPAV.XI.d.bray.mds.xlab,
y=norgPAV.XI.d.bray.mds.ylab) +
scale_color_manual(values = my_color_pal[10:17])
mds.GJ