J'ai créé un graphique avec Voici un exemple minimal: p> Je voudrais retirer l'une des deux parcelles. P> P> ggplot code> et ultérieurement j'ai utilisé
arrangezgrob code> pour combiner ces graphiques. Existe-t-il un moyen de supprimer des pièces un graphique de cette parcelle combinée? Ou peut-être extraire?
3 Réponses :
Les graphiques de grille sont compliqués des arbres imbriqués de choses. Un peu (d'accord, beaucoup) d'essai et d'erreur a réussi à obtenir vos deux parcelles comme ceci: Il y a probablement un moyen plus facile ... p> p>
Premier, utilisez Ensuite, vous pouvez extraire et les tracer comme ceci: p> grid.ls () code> pour voir une liste des grobs qui composent la parcelle. Ici, vous rechercherez les noms des deux objets code> gtree code> qui codent les parcelles individuelles. (Comparé à treillis strong>, Le nommage GGPLot2 STRUT> S de la grobes de composants est relativement inutile, bien que dans ce cas, il n'est pas trop difficile de voir quelles pièces vous voudrez extraire. )
Je savais qu'il y avait un moyen plus facile! Devrait-il être grid.ls (g) code> si vous ne voulez pas le tracer en premier? Je ne sais pas si ma réponse est utile maintenant, et je pourrais le supprimer.
@Spacédman - Le vôtre pourrait ne pas être l'approche la plus utile, bien que le Seigneur sache que je l'ai utilisé assez souvent dans le passé!
grid.gremove ("gtree.81") code> pour enlever un
ou, de manière programmatique, grid.remove (unique (A $ GPATH [GRREPL (GREPL ("GTREE", A $ GPATH)]) [1]) Code>
@baptiste merci très gentil. Mais votre deuxième suggestion ne fonctionne pas pour moi. J'ai essayé de remplacer A code> avec
g code>, mais cela ne le corrige pas. Qu'est-ce que je rate?
Oups, oublié de définir a <- grid.ls (impression = false) code>
Si vous n'êtes pas obligé d'utiliser arrangezgrob code>: il est possible d'extraire des grobs à partir d'une mise en page code> gtable code>. Il faut plus de temps pour configurer la mise en page, mais l'extraction de l'élément requis est simple.
# Keep g2
p2 = gt
p2$layout = gt$layout[-1, ]
p2$grobs = gt$grobs[-1]
grid.newpage()
grid.draw(p2)
# Keep g1
p1 = gt
p1$layout = gt$layout[-2, ]
p1$grobs = gt$grobs[-2]
grid.newpage()
grid.draw(p1)
Si vous donnez des noms aux deux grobes dans gtable_add_grob (..., nom = "tracé1") code>, vous pouvez simplement utiliser
grid.draw (gTable_filter (gt, "tracé1", couper = Faux)) code>