I think you could use some code from this post: https://drsimonj.svbtle.com/ordering-categories-within-ggplot2-facets
DATALL <- data.frame(sensors=c("A1","A1","A2","A2","A3","A3","A1","A1","A2","A2","A3","A3","A1","A1","A2","A2","A3","A3"),
Formaldehyde=c(21.3,34.2,55,90,66.3,71.8,22.3,44.2,65,90,69.3,79.8,25.3,35.2,45,70,56.3,80.8),
season= c("summer", "winter"))
DATALL <- merge(
# merge your dataset...
DATALL %>%
# adding a column with season and sensor index
unite(index, c("season", "sensors")),
# ... to a column giving the order of sensors by season
DATALL %>%
group_by(season, sensors) %>%
summarise(Formaldehyde = mean(Formaldehyde, na.rm = T)) %>%
arrange(Formaldehyde) %>%
mutate(order = row_number()) %>% arrange(order) %>%
# create the common row index
unite(index, c("season", "sensors")) %>% select(index, order)) %>%
separate(index, c("season", "sensors"))
ggplot(DATALL,aes(factor(order, levels = min(order):max(order)),Formaldehyde, fill=sensors)) +
geom_jitter(position=position_jitter(width=0.3, height=0.2), aes(colour=factor(sensors)), alpha=0.4) +
geom_boxplot(outlier.shape = NA) +
facet_wrap(~season, scales='free', ncol=1) +
scale_x_discrete(
breaks = DATALL$order,
labels = DATALL$sensors,
expand = c(0,0))DATALL <- data.frame(sensors=c("A1","A1","A2","A2","A3","A3","A1","A1","A2","A2","A3","A3","A1","A1","A2","A2","A3","A3"),
Formaldehyde=c(21.3,34.2,55,90,66.3,71.8,22.3,44.2,65,90,69.3,79.8,25.3,35.2,45,70,56.3,80.8),
season= c("summer", "winter"))
DATALL <- merge(
# merge your dataset...
DATALL %>%
# adding a column with season and sensor index
unite(index, c("season", "sensors")),
# ... to a column giving the order of sensors by season
DATALL %>%
group_by(season, sensors) %>%
summarise(Formaldehyde = mean(Formaldehyde, na.rm = T)) %>%
ungroup() %>% arrange(season, Formaldehyde) %>%
mutate(order = row_number()) %>% arrange(order) %>%
# create the common row index
unite(index, c("season", "sensors")) %>% select(index, order)) %>%
separate(index, c("season", "sensors"))
ggplot(DATALL,aes(factor(order, levels = min(order):max(order)),Formaldehyde, fill=sensors)) +
geom_jitter(position=position_jitter(width=0.3, height=0.2), aes(colour=factor(sensors)), alpha=0.4) +
geom_boxplot(outlier.shape = NA) +
facet_wrap(~season, scales='free', ncol=1) +
scale_x_discrete(
breaks = DATALL$order,
labels = DATALL$sensors,
expand = c(0,0)) +
labs(x = "sensors")
