1
votes

Comment insérer un espace vide sur un ggplot? Un problème avec geom_rect ()

Veuillez trouver un reprex ci-dessous.

J'ai produit ce graphique

 entrez la description de l'image ici

Comme vous pouvez le voir, la grille continue de 0 à -5. Je souhaite laisser cette zone complètement vide, comme dans ce tracé (produit dans Photoshop):

 entrez la description de l'image ici

J'ai essayé geom_rect () mais je ne peux pas le faire fonctionner:

 entrez la description de l'image ici

1) Pourquoi le rectangle est-il rose lorsqu'il est spécifié fill =" white "? J'ai besoin qu'il soit blanc.

2) Comment puis-je combler l'écart entre le bas de geom_rect () et l'axe des x? J'ai besoin que cet espace soit aussi blanc (c'est-à-dire aucun signe de la grille).

SOLUTION

1) geom_rect (données = df, mapping = aes (xmin = 0, xmax = 3, ymin = -6, ymax = 0), fill = "blanc", alpha = 1)

2) J'ai changé en scale_y_continuous (name = "X", breaks = seq (0,35,5)) + coord_cartesian (ylim = c (-5,35)) au lieu de scale_y_continuous (name = "X", breaks = seq (0,35,5), limites = c (-5,35))

#My script
df <- data.frame(x = as.factor(w3$uicc),
                  y = w3$lnd,
                  f = rep(c(""), c(nrow(w3))))

df <- df[!is.na(df$x),]

  ggplot(df) +
    geom_boxplot(aes(x, y, fill = f, colour = f), outlier.alpha = 0, position = position_dodge(width = 0.78)) +
    scale_x_discrete(name = "", label=c("Stage III\nn=115","Stage IV\nn=302")) + theme +
    scale_y_continuous(name="X", breaks=seq(0,35,5), limits=c(-5,35)) +
    stat_boxplot(aes(x, y, colour = f), geom = "errorbar", width = 0.3,position = position_dodge(0.7753), size=1) +
    geom_point(aes(x, y, fill = f, colour = f), size = 3, shape = 21, position = position_jitterdodge(), alpha=0.7) +
    scale_fill_manual(values = c("#edf1f9", "#fcebeb"), name = "X",
                      labels = c("X", "X")) +
    scale_colour_manual(values = c("#1C73C2", "red"), name = "X",
                        labels = c("X", "X")) +
    geom_rect(data=df, mapping=aes(xmin=0, xmax=3, ymin=-5, ymax=0, fill="white"), alpha=1)



#My data

w3 <- structure(list(uicc = c(4L, 3L, 4L, 4L, 3L, 3L, 3L, 3L, 4L, 4L, 
4L, 3L, 3L, 3L, 4L, 3L, 4L, 4L, 4L, 3L, 4L, 4L, 4L, 4L, 3L, 3L, 
4L, 4L, 4L, 3L, 4L, 4L, 4L, 4L, 4L, 3L, 4L, 3L, 3L, 3L, 3L, 4L, 
4L, 3L, 3L, 3L, 3L, 4L, 4L, 3L, 4L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 
3L, 3L, 4L, 3L, 3L, 4L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 3L, 4L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
3L, 4L, 3L, 4L, 3L, 4L, 4L, 4L, 4L, 4L), lnd = c(22.2222222, 
9.0909091, 25, 12.1212121, 6.6666667, 4.3478261, 33.3333333, 
10, 33.3333333, 60, 71.4285714, 25, 16.6666667, 11.1111111, 42.8571429, 
16.6666667, 10, 62.5, 25, 11.1111111, 50, 33.3333333, 7.6923077, 
7.6923077, 7.1428571, 16.6666667, 20, 14.2857143, 11.7647059, 
12.5, 71.4285714, 17.6470588, 33.3333333, 2.8571429, 7.1428571, 
5.8823529, 6.25, 4.7619048, 5, 14.2857143, 3.3333333, 20, 28.5714286, 
100, 7.1428571, 9.0909091, 2.173913, 18.1818182, 7.6923077, 9.0909091, 
14.2857143, 4.5454545, 8.6956522, 3.8461538, 11.5384615, 11.1111111, 
66.6666667, 4, 4.5454545, 14.2857143, 25, 14.2857143, 14.2857143, 
25, 7.6923077, 9.0909091, 5.8823529, 4.5454545, 16.6666667, 12.5, 
4.7619048, 30, 8.3333333, 10.5263158, 8.1081081, 8.3333333, 6.6666667, 
18.1818182, 5, 9.0909091, 6.6666667, 63.6363636, 26.6666667, 
12.5, 14.2857143, 25, 6.0606061, 25.9259259, 25, 10.5263158, 
40, 9.0909091, 6.6666667, 16.6666667, 20, 22.2222222, 14.2857143, 
15.3846154, 12.1212121, 2.0408163)), row.names = c(3L, 4L, 10L, 
15L, 19L, 20L, 35L, 37L, 40L, 47L, 48L, 50L, 54L, 57L, 59L, 62L, 
63L, 66L, 67L, 68L, 74L, 80L, 81L, 83L, 84L, 94L, 99L, 100L, 
117L, 120L, 122L, 123L, 129L, 130L, 131L, 137L, 140L, 141L, 142L, 
144L, 165L, 171L, 175L, 182L, 192L, 195L, 198L, 199L, 204L, 208L, 
209L, 210L, 211L, 212L, 215L, 218L, 221L, 222L, 234L, 236L, 239L, 
241L, 242L, 243L, 246L, 251L, 257L, 260L, 261L, 268L, 275L, 276L, 
277L, 280L, 284L, 294L, 297L, 298L, 303L, 306L, 309L, 316L, 317L, 
319L, 320L, 322L, 324L, 326L, 328L, 329L, 330L, 333L, 334L, 336L, 
337L, 339L, 340L, 341L, 346L, 349L), class = "data.frame") 


0 commentaires

3 Réponses :


1
votes

Pour que geom_rect soit blanc, l'argument fill doit être défini en dehors du mappage, comme ceci:

geom_rect(data=df, mapping=aes(xmin=0, xmax=3, ymin=-5, ymax=0), fill = "white", alpha=1)


0 commentaires

1
votes

Lorsque vous spécifiez

geom_rect(mapping=aes(alpha=1))

vous demandez à ggplot de mapper la variable "white" à une couleur, ce qui utilise sa palette de couleurs par défaut. Si vous souhaitez spécifier la couleur d'un seul geom, le moyen le plus simple est de le spécifier en dehors de aes

geom_rect(mapping=aes([...]), fill="white", alpha=1)

De même, si vous deviez spécifier

geom_rect(mapping=aes([...], fill="white"), alpha=1)

Ensuite, ggplot2 essaierait de mapper cette valeur continue sur une échelle alpha continue ( scale_alpha_continuous )


0 commentaires

0
votes

J'ai mis à jour la question avec des solutions aux deux questions


3 commentaires

Sachez que coord_cartesian ne montrera tout simplement pas les données en dehors de la fenêtre de tracé, et peut conduire à des tracés trompeurs (par exemple, si une valeur aberrante de boxplot était en dehors des limites fixées).


Merci de l'avoir signalé. Y a-t-il d'autres solutions?


Essayez scale_y_continuous (name = "X", breaks = seq (0,35,5), limits = c (-5,35), expand = c (0, 0)) et supprimez coord_cartesian