mit ggsave und arrayGrob nach Aktualisierung von gridExtra auf 2.0.0

8

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:

%Vor%

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

%Vor%     
drmariod 20.11.2015, 09:39
quelle

2 Antworten

0

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.

    
drmariod 20.11.2015, 11:51
quelle
2

Als vorübergehende Problemumgehung für diese unglückliche Übergangszeit könnten Sie den Klassenhack, der sich in gridExtra befand, erneut implementieren,

%Vor%     
baptiste 21.11.2015 21:55
quelle

Tags und Links