2017-01-30 3 views
3

作成後にggplotオブジェクトを変更する方法がありますか?例えば作成後にggplotオブジェクトを変更する

私は後で変更用のPDFファイルと一緒にRオブジェクトを保存するために私の学生をお勧めします...

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') 

ので、新しい、場合、それらは、タイトルやラベルや、時には他のものを変更する必要があり、彼らは簡単にオブジェクトを読み込んで簡単なものを変更することができます。

load('graph.RData') 
print(graph) 
graph + 
    ggtitle('better title') + 
    ylab('seconds per quarter mile') 

色を離散スケールに変更するにはどうすればよいですか?元のプロットでは、yas.factorにラップします。しかし、後でそれを行う方法はありますか? データがgoneの場合は、オブジェクトを変更する方が良い方法があります。助言を得るのが大好きです。

例プロット:

data("iris") 

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

色はSpeciesにそれぞれある

+0

Rcolorbrewerパッケージを見ることができます。私は数回、プロットを行い、オブジェクトとして保存し、最後に上記のような多くのオブジェクトを使用してレポートを作成するときに、カラー・ビールを使用して配色を変更しました。 –

+0

プロットオブジェクトを保存しておけば、データは実際には消えません( 'str(グラフ) 'を見てください)ので、' ggplot(graph $ data、aes(... ')、またはあなたはマッピングを更新することができます。 'graph $ mapping $ fill < - quote(factor(cyl))' – user20650

答えて

8

あなたは、コードやデータのないプロットを変更するggplot_build()を使用することができます。

ggplot_build()を使用してプロットを分解:

q <- ggplot_build(p) 

は、ここで何が起こっているかを確認するために、オブジェクトqを見てみましょう。 は点の色を変更するには、qで、それぞれのテーブルを変更することができます

q <- ggplot_gtable(q) 

をし、それをプロットします:

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

ggplot_gtable()を使用してプロットを組み立てます

plot(q) 

今ポイントは黒です。

関連する問題