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 valeurs

situé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
demandé sur Gregor 2012-03-13 23:23:38

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)

clipoff

15
répondu baptiste 2012-03-13 20:05:30

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))
2
répondu broussea 2016-08-07 14:51:29

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')")

enter image description here

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')
2
répondu bschneidr 2018-08-21 21:43:37

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)
-2
répondu John 2014-12-31 00:54:07