2 votes

Tracer des barres de groupe légèrement séparées avec ggplot2 geom_bar()

Existe-t-il un moyen d'avoir un peu de séparation entre chaque groupe de barres créées avec bar_plot()? Comme avoir une plus grande distance entre les différents groupes et une petite distance à l'intérieur des barres des groupes, mais pas collées les unes aux autres.

Voici le code complet :

### génération de mon DF
df.bar <- as.data.frame( cbind(
                                "diagnostic" = rep( names_DX, 2 ) ,
                                "nombre" = as.numeric(c(9,18,43,8,34,12,3,7,38,12,8,6)),
                                "statut" = c(1,1,1,1,1,1,0,0,0,0,0,0)
                                ))
df.bar$diagnostic <- factor(df.bar$diagnostic,levels(df.bar$diagnostic)[c(1,5,6,2:4)]) #réorganiser les niveaux pour le tracé

### génération du tracé
p <-    ggplot(data = df.bar, aes(x = diagnostic, y = as.numeric(as.character(nombre)), fill = factor(statut) )) +
            geom_bar(stat = "identity", position=position_dodge())+
            theme_bw()

mon résultat :

barres collées

ce que je voudrais obtenir (ignorer les différences de couleurs, etc., seulement pour les positions des barres) :

barres séparées

Merci d'avance pour toute aide !

2voto

Jon Spring Points 4096

Vous pouvez ajuster ces paramètres avec les paramètres width de geom_bar et position_dodge.

La width de geom_bar contrôle la largeur de chaque barre individuelle. Si = 1, les barres seront collectivement aussi larges que tout l'axe des x. (Bien qu'il puisse y avoir de l'espace entre les groupes si les barres se chevauchent avec chaque groupe.)

La width de position_dodge contrôle l'espace accordé à chaque groupe. Si elle est zéro, les barres de chaque groupe se chevaucheront entièrement. Si elle correspond à la width de geom_bar, les barres de chaque groupe se toucheront sur les côtés. Si elle est à 1, la distance entre les groupes sera la même que la distance à l'intérieur de chaque groupe.

library(ggplot2)
ggplot(data = df.bar, aes(x = diagnosis, y = as.numeric(as.character(number)), fill = factor(status) )) +
  geom_bar(stat = "identity",  width = 0.4,
           position=position_dodge(width = 0.5))+
  theme_bw()

entrer la description de l'image ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X