デフォルトでは、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
パネルの背景色を変更するには、次のコードを使用します。
myplot + theme(panel.background = element_rect(fill = 'green', colour = 'red'))
プロットの色(パネルの色ではありません)を変更するには、次のようにします。
myplot + theme(plot.background = element_rect(fill = 'green', colour = 'red'))
テーマの詳細については、こちらをご覧ください 凡例、軸、テーマのクイックリファレンスシート 。
非推奨のopts
およびtheme_rect
を避けるには、次を使用します。
myplot + theme(panel.background = element_rect(fill='green', colour='red'))
Theme_grayに基づいて独自のカスタムテーマを定義しますが、一部の変更とグリッド線の色/サイズの制御を含むいくつかの追加の追加( 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_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_gray
の定義でtheme_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 の議論に基づいて choropleths または他のマップを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)
)
}