the scale on x, you have is based on sample, the natural ordering is by alphabetic ordering, whether they are late or early is independent of the alphabetic ordering, so we order the samples , first by time then by sample, and use factor data type (Which internally is integer) to form a definite ordering of the samples.
Note that I shared the data for mdata_class as a directly reporoducible text (dput can do this)
library(tidyverse)
# dput(mdata_class)
mdata_class <- structure(list(OTU = c("Otu00009", "Otu00009", "Otu00009", "Otu00009",
"Otu00009", "Otu00009", "Otu00009", "Otu00020", "Otu00020", "Otu00020",
"Otu00020", "Otu00020", "Otu00002", "Otu00002", "Otu00002", "Otu00002",
"Otu00002", "Otu00002", "Otu00002", "Otu00002", "Otu00002", "Otu00002",
"Otu00035", "Otu00035", "Otu00035", "Otu00035", "Otu00035", "Otu00001",
"Otu00001", "Otu00001", "Otu00001", "Otu00001", "Otu00001", "Otu00001",
"Otu00001", "Otu00001", "Otu00001", "Otu00014", "Otu00014", "Otu00014",
"Otu00014", "Otu00014", "Otu00014", "Otu00014", "Otu00058", "Otu00058",
"Otu00031", "Otu00066"), Sample = c("DRR046797", "DRR046803",
"DRR046798", "DRR046801", "DRR046805", "DRR046800", "DRR046802",
"DRR046804", "DRR046798", "DRR046802", "DRR046803", "DRR046797",
"DRR046799", "DRR046797", "DRR046800", "DRR046804", "DRR046805",
"DRR046798", "DRR046803", "DRR046801", "DRR046806", "DRR046802",
"DRR046798", "DRR046799", "DRR046803", "DRR046804", "DRR046801",
"DRR046806", "DRR046802", "DRR046801", "DRR046803", "DRR046800",
"DRR046799", "DRR046805", "DRR046797", "DRR046798", "DRR046804",
"DRR046802", "DRR046805", "DRR046797", "DRR046803", "DRR046804",
"DRR046806", "DRR046801", "DRR046802", "DRR046805", "DRR046806",
"DRR046798"), Abundance = c(0.10213514, 0.0891209, 0.08548668,
0.05865369, 0.05629529, 0.05349115, 0.02630549, 0.14788058, 0.05880534,
0.02007156, 0.01713152, 0.01035021, 0.39862975, 0.36894936, 0.35967465,
0.34913663, 0.33464421, 0.33061613, 0.26273936, 0.26121922, 0.18225234,
0.17431231, 0.01992751, 0.01478939, 0.01371867, 0.01245559, 0.01083689,
0.66847252, 0.66746338, 0.63904709, 0.57818463, 0.56657288, 0.56348693,
0.54092091, 0.4778935, 0.47385673, 0.44762754, 0.06449178, 0.03359757,
0.03141518, 0.03140499, 0.01792293, 0.01570523, 0.0140405, 0.03083417,
0.01128693, 0.09179629, 0.02033571), sample = c("DRR046797",
"DRR046803", "DRR046798", "DRR046801", "DRR046805", "DRR046800",
"DRR046802", "DRR046804", "DRR046798", "DRR046802", "DRR046803",
"DRR046797", "DRR046799", "DRR046797", "DRR046800", "DRR046804",
"DRR046805", "DRR046798", "DRR046803", "DRR046801", "DRR046806",
"DRR046802", "DRR046798", "DRR046799", "DRR046803", "DRR046804",
"DRR046801", "DRR046806", "DRR046802", "DRR046801", "DRR046803",
"DRR046800", "DRR046799", "DRR046805", "DRR046797", "DRR046798",
"DRR046804", "DRR046802", "DRR046805", "DRR046797", "DRR046803",
"DRR046804", "DRR046806", "DRR046801", "DRR046802", "DRR046805",
"DRR046806", "DRR046798"), type = c("control", "obese", "control",
"obese", "obese", "control", "obese", "obese", "control", "obese",
"obese", "control", "control", "control", "control", "obese",
"obese", "control", "obese", "obese", "obese", "obese", "control",
"control", "obese", "obese", "obese", "obese", "obese", "obese",
"obese", "control", "control", "obese", "control", "control",
"obese", "obese", "obese", "control", "obese", "obese", "obese",
"obese", "obese", "obese", "obese", "control"), time = c("early",
"late", "early", "late", "early", "late", "late", "late", "early",
"late", "late", "early", "late", "early", "late", "late", "early",
"early", "late", "late", "early", "late", "early", "late", "late",
"late", "late", "early", "late", "late", "late", "late", "late",
"early", "early", "early", "late", "late", "early", "early",
"late", "late", "early", "late", "late", "early", "early", "early"
), bodyweight = c(20L, 45L, 40L, 45L, 78L, 45L, 45L, 45L, 40L,
45L, 45L, 20L, 45L, 20L, 45L, 45L, 78L, 40L, 45L, 45L, 32L, 45L,
40L, 45L, 45L, 45L, 45L, 32L, 45L, 45L, 45L, 45L, 45L, 78L, 20L,
40L, 45L, 45L, 78L, 20L, 45L, 45L, 32L, 45L, 45L, 78L, 32L, 40L
), Kingdom = c("k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria",
"k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria",
"k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria",
"k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria",
"k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria",
"k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria",
"k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria",
"k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria",
"k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria",
"k__Bacteria", "k__Bacteria", "k__Bacteria", "k__Bacteria"),
Phylum = c("p__Actinobacteria", "p__Actinobacteria", "p__Actinobacteria",
"p__Actinobacteria", "p__Actinobacteria", "p__Actinobacteria",
"p__Actinobacteria", "p__Firmicutes", "p__Firmicutes", "p__Firmicutes",
"p__Firmicutes", "p__Firmicutes", "p__Bacteroidetes", "p__Bacteroidetes",
"p__Bacteroidetes", "p__Bacteroidetes", "p__Bacteroidetes",
"p__Bacteroidetes", "p__Bacteroidetes", "p__Bacteroidetes",
"p__Bacteroidetes", "p__Bacteroidetes", "p__Proteobacteria",
"p__Proteobacteria", "p__Proteobacteria", "p__Proteobacteria",
"p__Proteobacteria", "p__Firmicutes", "p__Firmicutes", "p__Firmicutes",
"p__Firmicutes", "p__Firmicutes", "p__Firmicutes", "p__Firmicutes",
"p__Firmicutes", "p__Firmicutes", "p__Firmicutes", "p__Actinobacteria",
"p__Actinobacteria", "p__Actinobacteria", "p__Actinobacteria",
"p__Actinobacteria", "p__Actinobacteria", "p__Actinobacteria",
"p__Firmicutes", "p__Firmicutes", "p__Fusobacteria", "p__Proteobacteria"
), Class = c("c__Actinobacteria", "c__Actinobacteria", "c__Actinobacteria",
"c__Actinobacteria", "c__Actinobacteria", "c__Actinobacteria",
"c__Actinobacteria", "c__Bacilli", "c__Bacilli", "c__Bacilli",
"c__Bacilli", "c__Bacilli", "c__Bacteroidia", "c__Bacteroidia",
"c__Bacteroidia", "c__Bacteroidia", "c__Bacteroidia", "c__Bacteroidia",
"c__Bacteroidia", "c__Bacteroidia", "c__Bacteroidia", "c__Bacteroidia",
"c__Betaproteobacteria", "c__Betaproteobacteria", "c__Betaproteobacteria",
"c__Betaproteobacteria", "c__Betaproteobacteria", "c__Clostridia",
"c__Clostridia", "c__Clostridia", "c__Clostridia", "c__Clostridia",
"c__Clostridia", "c__Clostridia", "c__Clostridia", "c__Clostridia",
"c__Clostridia", "c__Coriobacteriia", "c__Coriobacteriia",
"c__Coriobacteriia", "c__Coriobacteriia", "c__Coriobacteriia",
"c__Coriobacteriia", "c__Coriobacteriia", "c__Erysipelotrichi",
"c__Erysipelotrichi", "c__Fusobacteriia", "c__Gammaproteobacteria"
)), row.names = c(NA, -48L), class = c("tbl_df",
"tbl", "data.frame"))
mdata_class <- arrange(mdata_class,time,sample)
mdata_class$sample <- forcats::as_factor(mdata_class$sample)
map <- mdata_class %>% select(sample,time) %>% unique
ggplot(mdata_class, aes(x = sample, y = Abundance, fill = Class)) +
#facet_grid(time~.) +
geom_bar(stat = "identity") +
# scale_fill_manual(values = class_colors) +
scale_x_discrete(
breaks = map$sample,
labels = map$time,
drop = TRUE
) +
theme(axis.title.x = element_blank(),
axis.text.x=element_text(angle=90,hjust=1,vjust=0.5)) +
guides(fill = guide_legend(reverse = TRUE, keywidth = 1, keyheight = 1)) +
ylab("Relative Abundance (Class > 1%) \n") +
ggtitle("Class Composition of Mothur MiSeq SOP data per individual")