J'utilise ggplot et j'ai deux graphiques que je veux afficher l'un sur l'autre. J'ai utilisé grid.arrange
de gridExtra pour les empiler. Le problème est que je veux que les bords gauches des graphiques s'alignent ainsi que les bords droits indépendamment des étiquettes d'axe. (le problème se pose parce que les étiquettes d'un graphique sont courtes tandis que l'autre est longue).
La question:
comment puis-je faire cela? Je ne suis pas marié à grid.arrange mais le ggplot2 est un must.
Ce que j'ai essayé:
j'ai essayé de jouer avec les largeurs et les hauteurs ainsi que ncol et nrow pour créer une grille 2 x 2 et placer les visuels dans les coins opposés, puis jouer avec les largeurs mais je ne pouvais pas obtenir les visuels dans les coins opposés .
require(ggplot2);require(gridExtra)
A <- ggplot(CO2, aes(x=Plant)) + geom_bar() +coord_flip()
B <- ggplot(CO2, aes(x=Type)) + geom_bar() +coord_flip()
grid.arrange(A, B, ncol=1)
Réponses:
Essaye ça,
Éditer
Voici une solution plus générale (travaille avec un certain nombre de parcelles) en utilisant une version modifiée de
rbind.gtable
inclus dansgridExtra
la source
tableGrob
. Legtable::cbind
me donne une erreur décevante:nrow(x) == nrow(y) is not TRUE
. Aucune suggestion?[2:5]
stand?Je voulais généraliser cela pour n'importe quel nombre de parcelles. Voici une solution étape par étape utilisant l'approche de Baptiste:
collecter les largeurs pour chaque grain de chaque parcelle
utilisez do.call pour obtenir la largeur maximale
attribuer la largeur maximale à chaque grob
terrain
la source
Utilisation du package cowplot :
la source
Sur http://rpubs.com/MarkusLoew/13295 se trouve une solution vraiment simple disponible (dernier élément) appliquée à ce problème:
vous pouvez également l'utiliser pour la largeur et la hauteur:
la source
size="first"
signifie que l'alignement ne sera pas très bon si la deuxième parcelle est plus grande que la premièreLe
egg
package enveloppe les objets ggplot dans un3x3
gtable standardisé , permettant l'alignement des panneaux de tracé entre les ggplots arbitraires, y compris ceux à facettes.la source
geom_tile
) avec une légende en bas et une carte thermique à plusieurs facettes (facet_grid
avecgeom_tile
), mais n'a pas réussi à aligner la hauteur du troisième graphique, qui était un dendrogramme (geom_segment
). cependant, cowplot ougridExtra::grid.arrange
n'étant pas en mesure de faire même le premier, cela fonctionne donc le mieux jusqu'à présentVoici une autre solution possible à l'aide
melt
du package reshape2, etfacet_wrap
:la source
Le package patchwork gère cela par défaut:
Créé le 08/12/2019 par le package reprex (v0.3.0)
la source
Au mieux, c'est un hack:
Cela semble vraiment faux.
la source
Je sais que c'est un ancien post, et qu'il a déjà été répondu, mais puis-je suggérer de combiner l'approche de @ baptiste avec
purrr
pour le rendre plus joli:la source