Reshape first, using tidyr::gather.
Something like:
library(tidyverse)
my_data <- read.csv(.......)
my_data2 <- gather(my_data, microbe, count, -S1)
ggplot(my_data2, aes(S1, count, fill = microbe)) +
geom_bar(aes(y = stat(prop))
Or perhaps it's the other way around:
my_data3 <- gather(my_data, sample, count, -S1)
ggplot(my_data3, aes(sample, count, fill = S1)) +
geom_bar(aes(y = stat(prop))
I can't test, because I can't read in data from an image!