Ich platziere mehrere Plots in ein Bild mit gridExtra::grid.arrange
und möchte die Option haben, das kombinierte Plot als ein Objekt zu speichern, das innerhalb einer Funktion als Teil zurückgegeben werden kann einer Liste zurückgegebener Objekte. Idealerweise möchte ich dies tun, ohne das Plot-Objekt zu drucken. Der folgende Code erstellt zwei Diagramme, kombiniert sie mit grid.arrange
und versucht, das Ergebnis in x
zu speichern. x
wird jedoch zu NULL
ausgewertet und die Grafik wird gedruckt. Die Dokumentation für grid.arrange
zeigt mich auf arrangeGrob
und schlägt vor, Plotten kann mit plot=FALSE
deaktiviert werden, aber ich bekomme einen Fehler, wenn ich das versuche, weil FALSE
kein Grob-Objekt ist.Ausgabe von gridExtra :: grid.arrange in ein Objekt speichern
Irgendwelche Vorschläge für das, was ich nicht verstehe?
# R under development
# Windows 7 (32 bit)
# ggplot2 1.0.0
# gridExtra 0.9.1
p1 <- ggplot(mtcars, aes(x=factor(cyl), y=mpg)) + geom_boxplot()
p2 <- ggplot(mtcars, aes(x=factor(cyl), y=wt)) + geom_boxplot()
x <- gridExtra::grid.arrange(p1, p2)
x
Per den Kommentaren, ich füge diese Bearbeitung hinzu. Wenn ich es mit arrangeGrob
versuche, bekomme ich überhaupt keine Ausgabe.
> gridExtra::arrangeGrob(p1, p2)
> print(gridExtra::arrangeGrob(p1, p2))
Error: No layers in plot
> x <- gridExtra::arrangeGrob(p1, p2)
> x
Error: No layers in plot
Versuchen 'arrangeGrob' statt – hrbrmstr
@hrbrmstr mit: Ich denke, eine kleine Antwort lohnen würde. Die Hilfeseite ist in diesem Fall eher wenig hilfreich und das hätte ich trotz einiger Erfahrungen nicht von ganzem Herzen beantworten können. –
Es wird tatsächlich seltsamer mit 'arraygrob' (ich vergesse immer wieder, dass Code nicht in den Kommentaren formatiert wird, also habe ich die Frage bearbeitet). – Benjamin