Ajouter les axes x et y pour tous facet_wrap
Il est souvent souhaitable de minimiser l'encre dans une parcelle. J'ai une facettes de la parcelle (facet_wrap
) et à supprimer autant d'encre que possible tout en préservant la lisibilité. J'ai mis que j'aimerais à l'exception de l'axe x et y n'est pas présent pour les facettes (parcelles), sauf sur l'extrême gauche ou en bas. Avec tant d'encre supprimé je crois que l'œil a besoin de ces repères et je demande comment faire pour mettre les axes x et y dans toutes les parcelles au sein d'un facet_wrap
. Ci-dessous mon code donc loin, le courant de sortie et la deired de sortie (lignes rouges sont souhaité ajouter):
library(ggplot); library(grid)
ggplot(mtcars, aes(mpg, hp)) +
geom_point() +
facet_wrap(~carb) +
theme(panel.grid = element_blank(),
panel.background = element_rect(fill = "white", colour = "black"),
panel.border = element_rect(fill = NA, colour = "white"),
axis.line = element_line(),
strip.background = element_blank(),
panel.margin = unit(2, "lines"))
Actuel De La Parcelle
Terrain
- J'ai eu un
could not find function "unit"
erreur sur votre exemple. - toutes mes excuses. permettez-moi d'ajouter les bibliothèques utilisées.
- Vous ne pouvez pas faire cela très facilement, parce que le
axis.line
thème élément ne sera pas affiché sur chaque panneau, à moins quescales = "free"
, et lapanel.border
thème élément est un rectangle, et vous ne pouvez pas spécifier des valeurs différentes pour les différents côtés d'un rectangle élément. Vous pouvez sorte de faux avecgeom_vline
etgeom_hline
, mais il sera difficile de l'obtenir à regarder à droite. - Vous pouvez obtenir des idées à partir de @baptiste réponses here et here.
gridExtra::borderGrob(type=9)
pourrait aider, si ggplot2 avait permis une certaine souplesse dans les éléments de thème.- pouvez-vous undelete votre réponse?
- Je ne pense pas qu'ils soient très utiles exemples pour une utilisation future, j'ai surtout mis en place pour la discussion qu'ils ne rentrent pas dans les commentaires
Vous devez vous connecter pour publier un commentaire.
plus simple serait d'ajouter des segments dans chaque parcelle de bord,
Cela devrait simplifier les choses beaucoup:
scales = "free"
pour moi n'est pas bon. +1Suivantes Thomas réponse à partir de ci - dessus
Il vous suffit de définir
scales='free'
dansfacet_wrap
et assurez-vous de définir les limites dansscale_x_continuous
etscale_y_continuous
La citron package ajoute cette fonctionnalité; voir
cette vignette. (Exemple de code et de la parcelle à partir de là.)
Ici est longue solution de contournement.
Premier, magasin de votre parcelle d'origine comme objet, puis créer un autre complot qui n'ont pas d'axe de tiques et de l'axe des textes.
Maintenant utiliser la fonction
ggplotGrob()
pour convertir les deux parcelles de grobs. Si nous nous penchons sur la structure de ces grobs vous verrez que visible de l'axe y est grob 14 et 17 (d'autres sont à zéro grobs), et de l'axe x sont grobs 23 à 25.Donc, utiliser les grobs sur un terrain de 2 pour remplacer zéro grobs dans la parcelle 1 et vous obtiendrez des lignes d'axe.