Da ich bisher eine ähnliche Frage zu stackoverflow gelesen habe, konnte ich keine gute Lösung finden, ohne ggplot2 auf die Entwicklungsversion zu aktualisieren.
Mein Problem, ich habe mehrere Skripte, die arrangeGrob
verwenden, um aus einzelnen Graphen kombinierte Graphen zu erstellen. Ich speichere sie in eine Variable und print
diese Variable und / oder speichere sie mit ggsave
. Da viele meiner Kollegen diese Pakete regelmäßig aktualisieren (was eine gute Sache ist, denke ich), bekomme ich immer Mails, die nach dem Update auf gridExtra 2.0.0
nicht mehr funktionieren.
Ich bin mir nicht sicher, wie ich damit umgehen soll, da die neue ggplot2
Version, in der das Problem gelöst ist, noch in der Entwicklung ist. Ich fand einen Artikel on stack overflow, um einen Test zu entfernen, wenn das zu speichernde Objekt ein ggplot
ist, da die neue Funktion arrangeGrob
ein gtable
-Objekt zurückgibt, aber dies schlägt in meinem Fall fehl:
Einige Ausgaben und Fehler auf der Konsole:
%Vor% test.pdf
wird erstellt, ist aber in keiner Weise beschädigt und kann nicht geöffnet werden. Auch das Objekt gtable
wird gedruckt. Ich denke, hier stimmt etwas nicht.
Aber wie Sie sehen können, habe ich im Beispielcode gefunden, dass ich die grid.draw
-Funktion gefunden habe, um zumindest mein kombiniertes Diagramm zu zeichnen, aber ich kann immer noch nicht ggsave
it nach der Änderung.
Ich möchte nicht die "alten" ( pdf(file = "test.pdf"); grid.draw(b); dev.off()
) Gerätesparfunktionen verwenden, wie in dieser Artikel , da sie sehr unbequem zu verwenden sind.
In diese Frage fragte jemand genau wie um das Objekt zu speichern, aber in der Antwort erklären sie nur grid.darw
und er akzeptierte die Antwort als solving the problem
und niemand antwortete auf meine Kommentare bis jetzt.
Ich bin also im Moment ziemlich verloren, wie ich funktionierende Skripte für diejenigen bereitstellen kann, die nicht auf das neue gridExtra
-Paket aktualisiert haben. Die Möglichkeit, den Test innerhalb der Funktion ggsave
zu entfernen, ist wahrscheinlich die beste Lösung, da ich die gridExtra
und ggplot2
Version überprüfen und die ggsave
-Funktion nur überschreiben kann, falls die Version nicht übereinstimmt, aber ich könnte Lass es nicht laufen.
Ich freue mich auf Hilfe.
BEARBEITEN:
vielleicht hilft sessionInfo
Pascal hat mich schließlich auf die Idee gebracht, nach den Unterschieden zwischen ggplot 1.0.1
und ggplot 1.0.1.9003
zu suchen, da ich die Entwicklungsversion von ggplot
nicht möchte oder erzwinge.
Meine Idee ist also eine Funktion, die innerhalb jedes Skripts ausgeführt wird und die default ggsave
-Funktion überschreibt.
Ich habe es jetzt ein wenig getestet, wenn es irgendwelche Bugs oder so gibt, lass es mich wissen. Aber so wie ich es jetzt mache funktioniert es soweit.
%Vor% Es überschreibt im Grunde die ggsave
und erstellt zwei neue Funktionen aus der Entwicklungsversion.
Nach dem Ausführen der Funktion scheint alles zu funktionieren.