I am using below code to plot multiple box plot but I am still struggling to understand how I can add whisker to box plot and how to change sample order like in this figure SampleType? library(reshape2) library(ggplot2) list.files() morphData <- read.table("Box.plot.chemical.txt", sep="\t", header=TRUE) morphData df.m <- melt(morphData, id.var = "SampleType") pdf("box.plot.pdf", width = 18, height = 12) p <- ggplot(data = df.m, aes(x="", y=value)) + theme_bw() + theme( panel.grid.major=element_blank(), panel.grid.minor=element_blank(), plot.title = element_text(vjust = -8.5,hjust = 0.1), line=element_line(size=1), axis.text.x = element_text(size = 10, face ="bold", hjust = 0.5, colour = "black"), axis.text.y = element_text(size = 12, face ="bold", hjust = 0.5, colour = "black"), axis.ticks.x = element_blank()) + theme(strip.background=element_rect(fill="white")) + theme(strip.text=element_text(color="black",face="bold", size =14)) + geom_boxplot(aes(fill=SampleType),outlier.colour = NA) p + facet_wrap(.~variable, scales="free") dev.off();