ggplot2で作成したプロットの背景色を変更するにはどうすればよいですか


95

デフォルトでは、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

回答:


120

パネルの背景色を変更するには、次のコードを使用します。

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

プロットの色(パネルの色ではない)を変更するには、次のようにします。

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

テーマの詳細については、ここを参照してください。凡例、軸、テーマのクイックリファレンスシート


39
もありtheme_bw、白い背景と灰色のグリッド線が表示されます。それはデフォルトのグレーの背景よりもはるかに良く見えるプリントのように私は、それをすべての時間を使用しますmyplot + theme_bw()
ROLO

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

11
デフォルトのB&W ggplotsため、スクリプトの先頭でこれを置く: ggplot <- function(...) { ggplot2::ggplot(...) + theme_bw() }
ROLO

1
特にジャックの答えはグリッド線の色を変更しないため、それ自体の答えに値する@ROLOです。
naught101

7
optstheme_rectはggplot2の新しいバージョンでは非推奨であることに注意してください。(0.9.3)。2番目のコマンドの新しいバージョンは、なるように、:myplot + theme(plot.background = element_rect(fill='green', colour='red'))
ラムNarasimhan

50

非推奨を回避optsしてtheme_rect使用するには:

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

theme_grayに基づいて独自のカスタムテーマを定義するには、いくつかの変更と、グリッド線の色/サイズの制御(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_update(plot.background = element_rect(fill="pink"), axis.title.x = element_text(colour = "red"))

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

theme_pink <- theme_get()

theme_pinkリストが、一方、ある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()
    )   
}

最後に、ここでの議論に基づいて、ggplotでコロプレスまたは他のマップをプロットするときに役立つ、より過激なテーマ非推奨を避けるために更新されました。ここでの目的は、灰色の背景、およびマップから注意をそらす可能性のあるその他の機能を削除することです。

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。他の引数はオプションです。
オタマジャクシのレース2014

1

これは、ggplot2の背景を白くするためのカスタムテーマと、出版物やポスターに適したその他の変更点です。+ mythemeを追加します。+ mythemeの後に+ themeでオプションを追加または変更する場合は、+ mythemeのオプションを置き換えるだけです。

library(ggplot2)
library(cowplot)
theme_set(theme_cowplot())

mytheme = list(
    theme_classic()+
        theme(panel.background = element_blank(),strip.background = element_rect(colour=NA, fill=NA),panel.border = element_rect(fill = NA, color = "black"),
              legend.title = element_blank(),legend.position="bottom", strip.text = element_text(face="bold", size=9),
              axis.text=element_text(face="bold"),axis.title = element_text(face="bold"),plot.title = element_text(face = "bold", hjust = 0.5,size=13))
)

ggplot(data=data.frame(a=c(1,2,3), b=c(2,3,4)), aes(x=a, y=b)) + mytheme + geom_line()

カスタムggplotテーマ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.