Veuillez trouver un reprex
ci-dessous.
J'ai produit ce graphique
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):
J'ai essayé geom_rect () mais je ne peux pas le faire fonctionner:
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 descale_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")
3 Réponses :
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)
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
)
J'ai mis à jour la question avec des solutions aux deux questions
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