8
votes

fractionnement ou enlever des graphiques après Arrangrobrob

J'ai créé un graphique avec ggplot et ultérieurement j'ai utilisé arrangezgrob 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?

Voici un exemple minimal: xxx

Je voudrais retirer l'une des deux parcelles.


0 commentaires

3 Réponses :


1
votes

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: xxx

Il y a probablement un moyen plus facile ...


0 commentaires

4
votes

Premier, utilisez grid.ls () pour voir une liste des grobs qui composent la parcelle. Ici, vous rechercherez les noms des deux objets gtree qui codent les parcelles individuelles. (Comparé à treillis , Le nommage GGPLot2 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. ) XXX

Ensuite, vous pouvez extraire et les tracer comme ceci: xxx


6 commentaires

Je savais qu'il y avait un moyen plus facile! Devrait-il être grid.ls (g) 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") pour enlever un


ou, de manière programmatique, grid.remove (unique (A $ GPATH [GRREPL (GREPL ("GTREE", A $ GPATH)]) [1])


@baptiste merci très gentil. Mais votre deuxième suggestion ne fonctionne pas pour moi. J'ai essayé de remplacer A avec g , mais cela ne le corrige pas. Qu'est-ce que je rate?


Oups, oublié de définir a <- grid.ls (impression = false)



1
votes

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)


1 commentaires

Si vous donnez des noms aux deux grobes dans gtable_add_grob (..., nom = "tracé1") , vous pouvez simplement utiliser grid.draw (gTable_filter (gt, "tracé1", couper = Faux))