2011-07-18 48 views
68

デフォルトでは、ggplot2は背景が灰色のプロットを作成します。プロットの背景の色を変更するにはどうすればよいですか?例えばggplot2で作成されたプロットの背景色を変更するには

、次のコードによって生成されるプロット:

library(ggplot2) 
myplot<-ggplot(data=data.frame(a=c(1,2,3), b=c(2,3,4)), aes(x=a, y=b)) + geom_line() 
myplot 

答えて

86

次のコードを使用して、パネルの背景色を変更する:プロットの色を変更する

myplot + theme(panel.background = element_rect(fill = 'green', colour = 'red')) 

(ただしパネルの色ではなく)、次の操作を行うことができます:

myplot + theme(plot.background = element_rect(fill = 'green', colour = 'red')) 

詳細はこちらQuick reference sheet for legends, axes and themes

myplot + theme(panel.background = element_rect(fill='green', colour='red')) 

theme_grayではなく、変更およびグリッド線の色/サイズの制御(より多くのオプションを含む、いくつかの追加のエキストラの一部で基づいて、独自のカスタムテーマを定義するには、次の非推奨optstheme_rect使用を避けるために

+39

'theme_bw'もあり、白い背景と灰色のグリッド線を与えます。私はいつもそれを使用しています。印刷物のようにデフォルトの灰色の背景よりもはるかに優れています: 'myplot + theme_bw()' – ROLO

+0

@これをデフォルトですべてのプロットに適用する方法はありますか? – krlmlr

+9

デフォルトのB&W ggplotsのスクリプトの先頭にこれを入れます: 'ggplot < - function(...){ \t ggplot2 :: ggplot(...)+ theme_bw() } ' – ROLO

44

at ggplot2.orgと遊ぶために利用できる:

theme_jack <- function (base_size = 12, base_family = "") { 
    theme_gray(base_size = base_size, base_family = base_family) %+replace% 
     theme(
      axis.text = element_text(colour = "white"), 
      axis.title.x = element_text(colour = "pink", size=rel(3)), 
      axis.title.y = element_text(colour = "blue", angle=45), 
      panel.background = element_rect(fill="green"), 
      panel.grid.minor.y = element_line(size=3), 
      panel.grid.major = element_line(colour = "orange"), 
      plot.background = element_rect(fill="red") 
    ) 
} 

ggplotはマスキングなしで、将来的に呼ばれているデフォルトのカスタムテーマを作成するには:

theme_set(theme_jack()) 

あなたは、現在設定されているテーマの要素を変更する場合:theme_pinkが、一方、リストであることを

theme_pink <- theme_get() 

注:オブジェクトとして現在のデフォルトのテーマを保存するには

theme_update(plot.background = element_rect(fill="pink"), axis.title.x = element_text(colour = "red")) 

theme_jackは関数でした。テーマをtheme_jackに戻すにはtheme_set(theme_jack())を使用し、theme_pinkに戻るにはtheme_set(theme_pink)を使用してください。

theme_graytheme_bwに置き換えて、ご希望の場合はtheme_jackの定義に置き換えることができます。カスタムテーマはtheme_bwに似ているが、すべてのグリッド線を(X、Y、メジャーとマイナー)がオフの場合:

theme_nogrid <- function (base_size = 12, base_family = "") { 
    theme_bw(base_size = base_size, base_family = base_family) %+replace% 
     theme(
      panel.grid = element_blank() 
    ) 
} 

最後に便利な、より過激なテーマの議論hereに基づいて、ggplotでchoroplethsまたは他のマップをプロットするが、推奨されなくなりました。ここでの目的は、灰色の背景やマップから気をそらす可能性のあるその他の機能を削除することです。

theme_map <- function (base_size = 12, base_family = "") { 
    theme_gray(base_size = base_size, base_family = base_family) %+replace% 
     theme(
      axis.line=element_blank(), 
      axis.text.x=element_blank(), 
      axis.text.y=element_blank(), 
      axis.ticks=element_blank(), 
      axis.ticks.length=unit(0.3, "lines"), 
      axis.ticks.margin=unit(0.5, "lines"), 
      axis.title.x=element_blank(), 
      axis.title.y=element_blank(), 
      legend.background=element_rect(fill="white", colour=NA), 
      legend.key=element_rect(colour="white"), 
      legend.key.size=unit(1.2, "lines"), 
      legend.position="right", 
      legend.text=element_text(size=rel(0.8)), 
      legend.title=element_text(size=rel(0.8), face="bold", hjust=0), 
      panel.background=element_blank(), 
      panel.border=element_blank(), 
      panel.grid.major=element_blank(), 
      panel.grid.minor=element_blank(), 
      panel.margin=unit(0, "lines"), 
      plot.background=element_blank(), 
      plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"), 
      plot.title=element_text(size=rel(1.2)), 
      strip.background=element_rect(fill="grey90", colour="grey50"), 
      strip.text.x=element_text(size=rel(0.8)), 
      strip.text.y=element_text(size=rel(0.8), angle=-90) 
     ) 
} 
+1

これは非常に役に立ちます。参考までに、 'plot.background'を' theme'に渡さなければならないという議論が見つかりました。その他の引数はオプションです。 –

関連する問題