ggplot, large barplot lorsque 1 modalité représentée

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Tomas leon
Messages : 51
Enregistré le : 09 Jan 2018, 16:12

ggplot, large barplot lorsque 1 modalité représentée

Messagepar Tomas leon » 04 Juin 2019, 17:18

Bonjour à tous,

J'ai un petit problème esthétique avec mon barplot :

Code : Tout sélectionner


data_observation <- data.frame(
  habitat_bush = c(
    0, 10, 10, 10,
    10, 30, 30, 30, 45,
    65, 65, 65, 80, 80,
    80, 90, 95, 100, 100
  ),
  obs = c(
    "no", "no", "no", "no", "yes",
    "no", "no", "yes", "no", "yes",
    "yes", "no", "yes", "no", "yes",
    "yes", "yes", "yes", "yes"
  )
)


plot_forest_test <- function(data = NULL, habitat_type = NULL, colour = NULL) {
  x <- enquo(habitat_type)
  fill <- enquo(colour)
 
  ggdata <- data %>%
    select(x = !!x, fill = !!fill) %>%
    mutate(
      group = case_when(
        x == 0 ~ "[0]",
        x > 0.0001 & x < 10.0001 ~ "]0-10]",
        x > 10.0001 & x < 25.0001 ~ "]10-25]",
        x > 25.0001 & x < 50.0001 ~ "]25-50]",
        x > 50.0001 & x < 75.0001 ~ "]50-75]",
        x > 75.0001 ~ "]75- 100]"
      )
    ) %>%
    select(-x) %>%
    group_by(group, fill) %>%
    count() %>%
    group_by(group) %>%
    group_modify(~ mutate(.data = .x, freq = n / sum(n)))
 
  ggplot(data = ggdata, mapping = aes(x = group, y = freq, fill = fill)) +
    geom_bar(stat = "identity", position = position_dodge()) +
    scale_fill_brewer(palette = "Greens") +
    scale_y_continuous(labels = scales::percent) +
    theme_minimal() +
    labs(x = expr(!!x), fill = expr(!!fill))
}

plot_forest_test(data = data_observation, habitat_type = habitat_bush, colour = obs)




Comme je n'ai d'une seule observation pour la surface [0], le barplot affiché est aussi large que l'ensemble des autres barplots. Aurait-il une astuce pour que la largeur des barplots gardent la même taille, et la même position (ici à gauche) quoi qu'il arrive s'il vous plait ?

Merci à tous

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: ggplot, large barplot lorsque 1 modalité représentée

Messagepar Mickael Canouil » 05 Juin 2019, 08:31

Bonjour,

argument 'preserve' de la fonction 'position_dodge()'

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Tomas leon
Messages : 51
Enregistré le : 09 Jan 2018, 16:12

Re: ggplot, large barplot lorsque 1 modalité représentée

Messagepar Tomas leon » 05 Juin 2019, 09:44

Cela marche parfaitement merci !


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité