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))
p <- ggplot(data3, aes(x=Group, y=Value, fill=Ordering)) +
geom_bar(stat="identity", position="stack") +
geom_hline(yintercept = 0, color = "black", size = 1) +
scale_fill_manual(values=data3$Color) +
labs(title="Stacked Bar Plot for 10 Groups", y="Value", x="Group") +
theme_classic(base_size = 16) +
theme(legend.position = "none")
print(p)
