2017-03-12 4 views
2

Alle - Es gibt einige andere Fragen zu diesem genauen Thema, aber keine von ihnen adressiert das Problem, das ich gegenüberstelle. Hier ist ein einfaches Code-Snippet. Kann mir bitte jemand sagen, was das Problem hier ist?Nur grobs erlaubt in gList

> grid.arrange(plot(rnorm(1000)),hist(rnorm(1000)), nrow=2, ncol=1) 
Error in gList(list(wrapvp = list(x = 0.5, y = 0.5, width = 1, height = 1,  : 
  only 'grobs' allowed in "gList" 
+1

@John Coleman hat Recht, Basisgrafiken sind nicht 'grobs'. Wenn Sie wirklich 'grid.arrange' verwenden wollten, könnten Sie versuchen, etwas wie die' grab_grob' Funktion in dieser Frage zu verwenden. http://stackoverflow.com/questions/33826249/force-a-regular-plot-object-into-a-grob-for-use-in-grid-arrange –

Antwort

2

Das Problem ist, dass plot() und hist() Basis Grafiken sind aber nicht Gitter- oder ggplot Grafiken, daher sind sie nicht Grobs („grob“ ist ein etwas fremdartig Akronym für „grid graphisches Objekt“). Sie könnten entweder äquivalente Grid-Plots finden oder einen Basisgrafik-Ansatz zum Stapeln von Plots verwenden.

Die Art und Weise Sie Letzteres tun würde:

> par(mfrow = c(2, 1)) 
> plot(rnorm(1000)) 
> hist(rnorm(1000)) #are you sure you want to make a hist of 1000 *different* random numbers? 
> par(mfrow = c(1, 1)) #reset this parameter 

Ausgang:

enter image description here

Sie auch layout verwendet, könnte in Betracht ziehen. Geben Sie ?layout für Details ein.

+0

Danke @John Coleman! Die beste Erklärung. Und meine Absicht mit der Verwendung der RNorm war nur zur Veranschaulichung. Ich habe es funktioniert mit grid.arrange, aber mit qplot, um das Histogramm zu zeichnen. Es funktioniert jetzt ein Vergnügen! – skafetaur

+0

@skefetaur Ich dachte, das war nur ein Beispiel. Ich habe tatsächlich ziemlich ähnliche Beispiele benutzt, als ich einen Statistikkurs (ich bin ein Mathematiklehrer von Beruf) unterrichtet habe, in dem die gleiche Menge von Zufallszahlen in gestapelten Plots auf unterschiedliche Weise angezeigt wird, also fiel mir dein Beispiel etwas merkwürdig auf. Ich schätze die grafischen Fähigkeiten von R, finde aber heraus, dass es in verschiedene inkompatible Pakete aufgeteilt ist, die manchmal verwirrend sind. Es ist wahrscheinlich am besten, eine reine grid.arrange-Lösung zu finden, aber es ist gut zu wissen, wie die Grafik der Grundgrafik Matrizen von Plots erstellt. –

Verwandte Themen