Load Required Packages

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)

Load the mds Object

We have provided the mds object after completing the cmdscale calculation, which can be found in mds.RData.

load("mds.RData")

Obtain Species and Subpopulation Information

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 Color Palette

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

MDS for all accessions

# 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

MDS for Afican populations

# 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

MDS plot for O. sativa populations

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

MDS plot for GJ subpopulations

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

MDS plot for XI subpopulations

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