Point coupé sur l'axe des x en ggplot
je trace une série temporelle avec les valeurs moyennes d'une variable de réponse en points (axe des y) par mois (axe des x).
Les valeurssituées sur l'axe des abscisses (c'est-à-dire les valeurs 0) sont découpées. Je peux changer les limites de l'axe des y pour inclure du rembourrage en dessous de 0, mais je préfère ne pas le faire.
y a-t-il un moyen de tracer ces 0 points devant, ou au-dessus de l'axe des x?
4 réponses
Essayez cette,
q <- qplot(1:10,1:10,size=I(10)) + scale_y_continuous(expand=c(0,0))
gt <- ggplot_gtable(ggplot_build(q))
gt$layout$clip[gt$layout$name=="panel"] <- "off"
grid.draw(gt)
vous pouvez utiliser l'attribut expand () sur le scale_y
Exemple pour 10% de chaque côté de l'échelle y:
ggplot(mydata, aes(y = value, x = mydate)) +
geom_point() +
scale_y_continuous(expand = c(0.1,0.1))
avec la sortie de la version 3.0.0 de ggplot2, vous pouvez simplement utiliser coord_cartesian(clip = 'off')
.
library(ggplot2)
qplot(x = 1:10, y = 1:10, size=I(10)) +
scale_y_continuous(expand=c(0,0)) +
coord_cartesian(clip = 'off') +
labs(title = "coord_cartesian(clip = 'off')")
si vous utilisez l'un des systèmes ou fonctions coord_*
les moins utilisés (par exemple coord_polar
ou coord_flip
), vous pouvez utiliser l'argument clip = 'off'
là aussi.
my_plot +
coord_flip(clip = 'off')
si vous utilisez des graphismes de base, vous pouvez utiliser clip().
plot(1:4)
clip(-0.5, 4.1, -0.5, 4.1)
points(0.85, 1, col = 'red', cex = 2)