Je travaille sur une fonction qui crée un fichier compliqué de ggplot
graphique. Le graphique comporte des dizaines d'annotations textuelles et rectangulaires, ainsi que des données catégorielles sous forme de barres. J'aimerais créer une option permettant d'inverser l'axe des x dans certaines situations. J'ai donc besoin d'ajouter une logique pour inverser l'axe si cette option est activée. Mais je rencontre des difficultés parce que l'inversion des groupements de données n'inverse pas les annotations (bien sûr). Mais je veux tout inverser.
Comment faire sans faire bouillir l'océan ?
library(tidyverse)
mtcars %>%
mutate( make = word(rownames(mtcars))) %>%
group_by(make) %>%
summarize(wt = sum(wt)) %>%
head ->
mt
p <- ggplot(mt, aes(x = make, y = wt)) +
geom_bar(stat = "identity") +
annotate(
"rect",
xmin = 1.5,
xmax = 4.5,
ymin = 4,
ymax = 7,
alpha = .5
) +
annotate("label", x = 3, y = 6, label = "WTF, y'all?")
p
Je constate que je ne peux même pas utiliser scale_x_reverse
pour une raison ou une autre :
p + scale_x_reverse()
#> Error in -x: invalid argument to unary operator
Veuillez noter que l'exemple reproductible que je donne ici est très simplifié. Dans la pratique, j'ai plusieurs dizaines d'éléments de types différents sur mon graphique.