2017-01-30 3 views
3

Gibt es eine bevorzugte Möglichkeit zum Ändern von ggplot Objekten nach der Erstellung?Ändern von ggplot-Objekten nach der Erstellung

Zum Beispiel habe ich meine Studenten empfehlen für spätere Änderungen ...

library(ggplot2) 
graph <- 
    ggplot(mtcars, aes(x=mpg, y=qsec, fill=cyl)) + 
    geom_point() + 
    geom_text(aes(label=rownames(mtcars))) + 
    xlab('miles per galon') + 
    ggtitle('my title') 

ggsave('test.pdf', graph) 
save(graph, file='graph.RData') 

So neu, falls das Objekt r zusammen mit der PDF-Datei zu speichern, sie haben Titel oder Etiketten zu ändern oder manchmal andere Dinge, Sie können das Objekt leicht laden und einfache Dinge ändern.

Was muss ich zum Beispiel tun, um die Farbe auf diskrete Skala zu ändern? In der ursprünglichen Handlung würde ich die y in as.factor wickeln. Aber gibt es einen Weg, es danach zu tun? Oder gibt es eine bessere Möglichkeit, die Objekte zu ändern, wenn die Daten gone sind. Würde mich freuen, einen Rat zu bekommen.

+0

Sie könnten sich Rcolorbrewer Paket ansehen. Ich machte es ein paar Mal, wo ich die Handlung machen würde, sie als ein Objekt speichern und wenn ich schließlich einen Bericht mit vielen Objekten wie oben erstellen würde, würde ich Farbbrüher verwenden und das Farbschema ändern. –

+0

Wenn Sie das Plot-Objekt gespeichert haben, sind die Daten nicht wirklich verschwunden (sehen Sie sich 'str (graph) an), so dass Sie das Plot mit' ggplot (graph $ data, aes (... ',, oder Möglicherweise können Sie das Mapping aktualisieren, zB 'graph $ mapping $ fill <- quote (faktor (cyl))' – user20650

Antwort

8

könnten Sie ggplot_build() verwenden, um die Handlung, ohne den Code oder Daten zu ändern:

Beispiel Grundstück:

data("iris") 

p <- ggplot(iris) + 
    aes(x = Sepal.Length, y = Sepal.Width, colour = Species) + 
    geom_point() 

Farben sind jeweils zu Species.

die Handlung abmontieren ggplot_build() mit:. Einen Blick auf das Objekt q, um zu sehen, was hier passiert

q <- ggplot_build(p) 

Nehmen Um die Farbe des Punktes zu ändern, können Sie die entsprechende Tabelle in q ändern:

q$data[[1]]$colour <- "black" 

die Handlung wieder zusammenbauen ggplot_gtable() mit:

q <- ggplot_gtable(q) 

Und es plotten:

plot(q) 

Jetzt Die Punkte sind schwarz.

Verwandte Themen