ggplot2テーマの自作
備忘録
R
ggplot2
ggplot2で作成するグラフのテーマを自作する。(執筆途中)
今回は、この棒グラフのテーマを変更していきます。
デフォルトで用意されたテーマ
ggplot2では既にtheme_gray()
, theme_bw()
, theme_linedraw()
, theme_light()
, theme_dark()
, theme_minimal
, theme_classic()
, theme_void()
, theme_test()
の9つのテーマが用意されており、デフォルトでは`theme_bw()
が適用されています。
theme_gray
theme_bw
theme_linedraw
theme_light
theme_dark
theme_minimal
theme_classic
theme_void
theme_test
テーマの自作
自作のテーマを作るには、適当な変数に指定したいテーマの要素を書き込むだけです。具体的には下のように、theme()
を書き込みます。作成したテーマはデフォルトのテーマと同じように使うことができます。
あるテーマに別のテーマを重ねることもできます。
<- theme(
theme_costom # ここに指定しい要素を書き込んでいきます。
# axis.line = ...
)
# いつも通り指定することで適用できます。
<- plot + theme_costom # これでplotにカスタムテーマが適用される。 plot
きまり
設定するそれぞれの要素には、element_blank()
かelement_text()
か、element_line()
か、element_rect()
のいずれかを指定します。その要素をなくしたい場合(何も表示したくない場合)はelement_blank()
を指定します。
削除 | element_blank() |
||
テキスト | element_text() |
・family ・ face ・ colour ・ size ・ lineheight ・ hjust ・ vjust ・ angle ・ margin ・ debug |
フォント 書体( plain , italic , bold , bold.italic )文字色 文字サイズ 行の高さ 水平方向の位置(0: 左揃え, 0.5: 中央揃え, 1: 右揃え) 垂直方向の位置(0: 下揃え, 0.5: 中央揃え, 1: 上揃え) 文字角度 マージン デバッグ |
線 | element_line() |
・color ・ linewidth ・ linetype ・ lineend |
線の色 線の幅 線のスタイル(0から6で指定) 線末端のスタイル( round , butt , square ) |
四角形 | element_rect() |
・fill ・ color ・ linewidth ・ linetype |
塗りつぶし色 枠線の色 枠線の幅 枠線のスタイル |
指定する要素
非常に長くなり見づらいですが、theme
の中には以下のような要素を設定することができます。
theme(
# タイトル
title, # 縦横比(1:正方形, 0.5:横:縦=2:1の長方形)
aspect.ratio, # 軸タイトル
axis.title, # x軸タイトル
axis.title.x,
axis.title.x.top,
axis.title.x.bottom,# y軸タイトル
axis.title.y,
axis.title.y.left,
axis.title.y.right,# 目盛りのテキスト
axis.text,
axis.text.x,
axis.text.x.top,
axis.text.x.bottom,
axis.text.y,
axis.text.y.left,
axis.text.y.right,
axis.text.theta,
axis.text.r,# 目盛り
axis.ticks,
axis.ticks.x,
axis.ticks.x.top,
axis.ticks.x.bottom,
axis.ticks.y,
axis.ticks.y.left,
axis.ticks.y.right,
axis.ticks.theta,
axis.ticks.r,
axis.minor.ticks.x.top,
axis.minor.ticks.x.bottom,
axis.minor.ticks.y.left,
axis.minor.ticks.y.right,
axis.minor.ticks.theta,
axis.minor.ticks.r,
axis.ticks.length,
axis.ticks.length.x,
axis.ticks.length.x.top,
axis.ticks.length.x.bottom,
axis.ticks.length.y,
axis.ticks.length.y.left,
axis.ticks.length.y.right,
axis.ticks.length.theta,
axis.ticks.length.r,
axis.minor.ticks.length,
axis.minor.ticks.length.x,
axis.minor.ticks.length.x.top,
axis.minor.ticks.length.x.bottom,
axis.minor.ticks.length.y,
axis.minor.ticks.length.y.left,
axis.minor.ticks.length.y.right,
axis.minor.ticks.length.theta,
axis.minor.ticks.length.r,# 軸の線
axis.line,
axis.line.x,
axis.line.x.top,
axis.line.x.bottom,
axis.line.y,
axis.line.y.left,
axis.line.y.right,
axis.line.theta,
axis.line.r,# 凡例の背景
legend.background,
legend.margin,
legend.spacing,
legend.spacing.x,
legend.spacing.y,
legend.key,
legend.key.size,
legend.key.height,
legend.key.width,
legend.key.spacing,
legend.key.spacing.x,
legend.key.spacing.y,
legend.frame,
legend.ticks,
legend.ticks.length,
legend.axis.line,
legend.text,
legend.text.position,
legend.title,
legend.title.position,
legend.position,
legend.position.inside,
legend.direction,
legend.byrow,
legend.justification,
legend.justification.top,
legend.justification.bottom,
legend.justification.left,
legend.justification.right,
legend.justification.inside,
legend.location,
legend.box,
legend.box.just,
legend.box.margin,
legend.box.background,
legend.box.spacing,
panel.background,
panel.border,
panel.spacing,
panel.spacing.x,
panel.spacing.y,
panel.grid,
panel.grid.major,
panel.grid.minor,
panel.grid.major.x,
panel.grid.major.y,
panel.grid.minor.x,
panel.grid.minor.y,
panel.ontop,
plot.background,
plot.title,
plot.title.position,
plot.subtitle,
plot.caption,
plot.caption.position,
plot.tag,
plot.tag.position,
plot.tag.location,
plot.margin,
strip.background,
strip.background.x,
strip.background.y,
strip.clip,
strip.placement,
strip.text,
strip.text.x,
strip.text.x.bottom,
strip.text.x.top,
strip.text.y,
strip.text.y.left,
strip.text.y.right,
strip.switch.pad.grid,
strip.switch.pad.wrap,complete = FALSE,
validate = TRUE
)