8
votes

Évitez de couper le coupure de points le long de l'axe dans ggplot

Je saisi une série de temps avec des valeurs moyennes d'une variable de réponse en tant que points (axe Y) par mois (axe X).

Les valeurs menées sur l'axe des x (I.E. 0 valeurs) sont coupées. Je peux modifier les limites de l'axe de Y pour inclure un remplissage inférieur à 0, mais je préfère ne pas.

Y a-t-il un moyen de tracer ces 0 points devant ou sur le dessus de l'axe des x?


0 commentaires

4 Réponses :


2
votes

Vous pouvez utiliser l'attribut expand () sur la balance Exemple de 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 commentaires

Merci. Cela fonctionne en élargissant la plage de l'axe Y. Cela fonctionne bien, mais je préférerais quelque chose comme ça suggéré par Baptiste ci-dessus. I.E., l'axe X commence à 0, mais les 0 points sont tracés sur le dessus. Merci pour votre aide, cependant.


Je pense que cela devrait être + échelle_y_continuer (expand = c (0,1,0,1)) .



19
votes

Essayez ceci, xxx

clipoff


6 commentaires

Va faire et essayer à nouveau. Merci!


Subbing dans le code suivant désactive l'écrêtage lorsque Faceting: GT $ Disposition Clip $ [Grep ("Panneau", GT $ Pumelette $ Nom)] <- "Off"


Comment allumeriez-vous gt dans un objet ggplot / gg?


Je doute que tu puisses, c'est comme tourner un gâteau au four dans de la farine et des œufs


Existe-t-il un moyen de ne pas éteindre l'écrêtage sur l'axe des x mais conservez-le sur l'axe des Y?


Cette solution ne fonctionne pas lorsque la parcelle contient des axes; Essayez d'ajouter couleur = "rouge" à l'esthétique et + theme_bw () à la première ligne du code. L'axe apparaît sur le dessus des points rouges. (Je n'ai pas encore trouvé de solution.)



-1
votes

Si vous utilisiez des graphiques 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)


1 commentaires

Je ne pouvais pas comprendre comment faire de ce travail dans le script ggplot. J'ai également essayé de tracer la figure, puis de couper et d'ajouter un point sur le dessus. Mais cela n'a pas fonctionné non plus. Merci.



13
votes

Avec la version de ggplot2 version 3.0.0, vous pouvez simplement utiliser coord_cartesian (clip = 'off') code>. xxx pré>

 Entrez la description de l'image ici p>

Si vous utilisez l'un des systèmes coord_ * code> les moins couramment utilisés (par exemple, coord_polaire code> ou ou coord_flip code>), vous pouvez alors utiliser le clip = 'OFF' code> argument là-bas, aussi. p>

my_plot + 
coord_flip(clip = 'off')


3 commentaires

Merci d'avoir fait remarquer cela! Votre point est maintenant intégré à la réponse.


Cette solution ne fonctionne pas lorsque la parcelle contient des axes; Essayez d'ajouter couleur = "rouge" à l'esthétique et + theme_bw () à la fin du code. L'axe apparaît sur le dessus des points rouges. (Je n'ai pas encore trouvé de solution.)


C'est un bon point. Je recommanderais d'ouvrir une nouvelle question à remédier à ce que c'est un problème distinct et une bonne question.