library(ggplot2)

name_color <- read.table("16s-color.csv", comment.char = "", sep = ",")
name <- name_color$V2
color <- name_color$V3
name_number <- length(name)
group_number <- 10

data <- data.frame(matrix(rnorm(name_number * group_number), name_number, group_number))
data3 <- NULL
for (i in 1 : group_number) {
  od <- order(data[, i])
  data2 <- NULL
  data2 <- cbind(data2, data[od, i])
  data2 <- cbind(data2, name[od])
  data2 <- cbind(data2, color[od])
  data2 <- cbind(data2, data.frame(group = rep(paste0("X", i), name_number)))
  data2[, 1] <- as.numeric(data2[, 1])
  pos <- which(data2[, 1] > 0)
  od_pos <- rev(pos)
  data2[pos, ] <- data2[od_pos, ]
  data3 <- rbind(data3, data2)
}
colnames(data3) <- c("Value", "Name", "Color", "Group")
data3$Value <- as.numeric(data3$Value)
data3$Name <- as.factor(data3$Name)
data3$Group <- factor(data3$Group, levels = paste0("X", seq(1, group_number)))

data3$Ordering <- factor(x = seq(1, name_number * group_number), levels = seq(1, name_number * group_number))

labelss=data.frame(x=1:10,y=-20,family=rep(c("CD","BL"),5))

p <- ggplot(data3, aes(x=Group, y=Value, fill=Ordering)) + 
  geom_bar(stat="identity", position="stack",width=0.75) + 
  geom_hline(yintercept = 0, color = "black", size = 1) +
  scale_fill_manual(values=data3$Color) +
  labs(title="", y="Value", x=NULL) +
  theme_classic(base_size = 16) +
  theme(legend.position = "none")+theme(axis.text.x = element_blank(),
        axis.ticks.x = element_blank(),axis.line.x=element_line(color="white"))+geom_segment(aes(x = 0.5, y = -20, xend = 2.3, yend = -20),linetype="dashed",width=2)+geom_text(aes(x=1,y=-19,label="CD"))+geom_text(aes(x=2,y=-19,label="BL"))+geom_text(aes(x=3,y=-19,label="CD"))+geom_text(aes(x=4,y=-19,label="BL"))+geom_text(aes(x=5,y=-19,label="CD"))+geom_text(aes(x=6,y=-19,label="BL"))+geom_text(aes(x=7,y=-19,label="CD"))+geom_text(aes(x=8,y=-19,label="BL"))+geom_text(aes(x=9,y=-19,label="CD"))+geom_text(aes(x=10,y=-19,label="BL"))+geom_segment(aes(x = 2.5, y = -20, xend = 4.3, yend = -20),linetype="dashed",width=2)+geom_segment(aes(x = 4.5, y = -20, xend = 6.3, yend = -20),linetype="dashed",width=2)+geom_segment(aes(x = 6.5, y = -20, xend = 8.3, yend = -20),linetype="dashed",width=2)+geom_segment(aes(x = 8.5, y = -20, xend = 10.3, yend = -20),linetype="dashed",width=2)+geom_text(aes(x=1.5,y=-21,label="2-month"))+geom_text(aes(x=3.5,y=-21,label="3-month"))+geom_text(aes(x=5.5,y=-21,label="4-month"))+geom_text(aes(x=7.5,y=-21,label="5-month"))+geom_text(aes(x=9.5,y=-21,label="6-month"))
Warning: Ignoring unknown parameters: `width`Warning: Ignoring unknown parameters: `width`Warning: Ignoring unknown parameters: `width`Warning: Ignoring unknown parameters: `width`Warning: Ignoring unknown parameters: `width`
print(p)

LS0tCnRpdGxlOiAiVHdvIGRpcmVjdGlvbmFsIGJhciBwbG90cyBmb3IgQkwiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyfQpsaWJyYXJ5KGdncGxvdDIpCgpuYW1lX2NvbG9yIDwtIHJlYWQudGFibGUoIjE2cy1jb2xvci5jc3YiLCBjb21tZW50LmNoYXIgPSAiIiwgc2VwID0gIiwiKQpuYW1lIDwtIG5hbWVfY29sb3IkVjIKY29sb3IgPC0gbmFtZV9jb2xvciRWMwpuYW1lX251bWJlciA8LSBsZW5ndGgobmFtZSkKZ3JvdXBfbnVtYmVyIDwtIDEwCgpkYXRhIDwtIGRhdGEuZnJhbWUobWF0cml4KHJub3JtKG5hbWVfbnVtYmVyICogZ3JvdXBfbnVtYmVyKSwgbmFtZV9udW1iZXIsIGdyb3VwX251bWJlcikpCmRhdGEzIDwtIE5VTEwKZm9yIChpIGluIDEgOiBncm91cF9udW1iZXIpIHsKICBvZCA8LSBvcmRlcihkYXRhWywgaV0pCiAgZGF0YTIgPC0gTlVMTAogIGRhdGEyIDwtIGNiaW5kKGRhdGEyLCBkYXRhW29kLCBpXSkKICBkYXRhMiA8LSBjYmluZChkYXRhMiwgbmFtZVtvZF0pCiAgZGF0YTIgPC0gY2JpbmQoZGF0YTIsIGNvbG9yW29kXSkKICBkYXRhMiA8LSBjYmluZChkYXRhMiwgZGF0YS5mcmFtZShncm91cCA9IHJlcChwYXN0ZTAoIlgiLCBpKSwgbmFtZV9udW1iZXIpKSkKICBkYXRhMlssIDFdIDwtIGFzLm51bWVyaWMoZGF0YTJbLCAxXSkKICBwb3MgPC0gd2hpY2goZGF0YTJbLCAxXSA+IDApCiAgb2RfcG9zIDwtIHJldihwb3MpCiAgZGF0YTJbcG9zLCBdIDwtIGRhdGEyW29kX3BvcywgXQogIGRhdGEzIDwtIHJiaW5kKGRhdGEzLCBkYXRhMikKfQpjb2xuYW1lcyhkYXRhMykgPC0gYygiVmFsdWUiLCAiTmFtZSIsICJDb2xvciIsICJHcm91cCIpCmRhdGEzJFZhbHVlIDwtIGFzLm51bWVyaWMoZGF0YTMkVmFsdWUpCmRhdGEzJE5hbWUgPC0gYXMuZmFjdG9yKGRhdGEzJE5hbWUpCmRhdGEzJEdyb3VwIDwtIGZhY3RvcihkYXRhMyRHcm91cCwgbGV2ZWxzID0gcGFzdGUwKCJYIiwgc2VxKDEsIGdyb3VwX251bWJlcikpKQoKZGF0YTMkT3JkZXJpbmcgPC0gZmFjdG9yKHggPSBzZXEoMSwgbmFtZV9udW1iZXIgKiBncm91cF9udW1iZXIpLCBsZXZlbHMgPSBzZXEoMSwgbmFtZV9udW1iZXIgKiBncm91cF9udW1iZXIpKQoKbGFiZWxzcz1kYXRhLmZyYW1lKHg9MToxMCx5PS0yMCxmYW1pbHk9cmVwKGMoIkNEIiwiQkwiKSw1KSkKCnAgPC0gZ2dwbG90KGRhdGEzLCBhZXMoeD1Hcm91cCwgeT1WYWx1ZSwgZmlsbD1PcmRlcmluZykpICsgCiAgZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiLCBwb3NpdGlvbj0ic3RhY2siLHdpZHRoPTAuNzUpICsgCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gMSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1kYXRhMyRDb2xvcikgKwogIGxhYnModGl0bGU9IiIsIHk9IlZhbHVlIiwgeD1OVUxMKSArCiAgdGhlbWVfY2xhc3NpYyhiYXNlX3NpemUgPSAxNikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikrdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy50aWNrcy54ID0gZWxlbWVudF9ibGFuaygpLGF4aXMubGluZS54PWVsZW1lbnRfbGluZShjb2xvcj0id2hpdGUiKSkrZ2VvbV9zZWdtZW50KGFlcyh4ID0gMC41LCB5ID0gLTIwLCB4ZW5kID0gMi4zLCB5ZW5kID0gLTIwKSxsaW5ldHlwZT0iZGFzaGVkIix3aWR0aD0yKStnZW9tX3RleHQoYWVzKHg9MSx5PS0xOSxsYWJlbD0iQ0QiKSkrZ2VvbV90ZXh0KGFlcyh4PTIseT0tMTksbGFiZWw9IkJMIikpK2dlb21fdGV4dChhZXMoeD0zLHk9LTE5LGxhYmVsPSJDRCIpKStnZW9tX3RleHQoYWVzKHg9NCx5PS0xOSxsYWJlbD0iQkwiKSkrZ2VvbV90ZXh0KGFlcyh4PTUseT0tMTksbGFiZWw9IkNEIikpK2dlb21fdGV4dChhZXMoeD02LHk9LTE5LGxhYmVsPSJCTCIpKStnZW9tX3RleHQoYWVzKHg9Nyx5PS0xOSxsYWJlbD0iQ0QiKSkrZ2VvbV90ZXh0KGFlcyh4PTgseT0tMTksbGFiZWw9IkJMIikpK2dlb21fdGV4dChhZXMoeD05LHk9LTE5LGxhYmVsPSJDRCIpKStnZW9tX3RleHQoYWVzKHg9MTAseT0tMTksbGFiZWw9IkJMIikpK2dlb21fc2VnbWVudChhZXMoeCA9IDIuNSwgeSA9IC0yMCwgeGVuZCA9IDQuMywgeWVuZCA9IC0yMCksbGluZXR5cGU9ImRhc2hlZCIsd2lkdGg9MikrZ2VvbV9zZWdtZW50KGFlcyh4ID0gNC41LCB5ID0gLTIwLCB4ZW5kID0gNi4zLCB5ZW5kID0gLTIwKSxsaW5ldHlwZT0iZGFzaGVkIix3aWR0aD0yKStnZW9tX3NlZ21lbnQoYWVzKHggPSA2LjUsIHkgPSAtMjAsIHhlbmQgPSA4LjMsIHllbmQgPSAtMjApLGxpbmV0eXBlPSJkYXNoZWQiLHdpZHRoPTIpK2dlb21fc2VnbWVudChhZXMoeCA9IDguNSwgeSA9IC0yMCwgeGVuZCA9IDEwLjMsIHllbmQgPSAtMjApLGxpbmV0eXBlPSJkYXNoZWQiLHdpZHRoPTIpK2dlb21fdGV4dChhZXMoeD0xLjUseT0tMjEsbGFiZWw9IjItbW9udGgiKSkrZ2VvbV90ZXh0KGFlcyh4PTMuNSx5PS0yMSxsYWJlbD0iMy1tb250aCIpKStnZW9tX3RleHQoYWVzKHg9NS41LHk9LTIxLGxhYmVsPSI0LW1vbnRoIikpK2dlb21fdGV4dChhZXMoeD03LjUseT0tMjEsbGFiZWw9IjUtbW9udGgiKSkrZ2VvbV90ZXh0KGFlcyh4PTkuNSx5PS0yMSxsYWJlbD0iNi1tb250aCIpKQpwcmludChwKQpgYGAK