この vignette では、グリッド描画関数がとる様々なフォーマットについてまとめています。 この情報のほとんどは、Rのドキュメントの中に散らばっています。 この付録では、それらを一箇所にまとめています。
ほとんどの geom は色、塗りつぶし、またはその両方を持っています。 色と塗りつぶしは、以下の方法で指定できます。
name で、例えば、"red"
。Rには 657 という名前の組み込みがあります。 colours()
でリストアップすることができます。
rgb指定 は、"#RRGGBB"
という形式の文字列で、RR
, GG
, BB
の各ペアは、00
からFF
の範囲の値を与える2つの16進数で構成されます。
オプションで色を透明にするには、"#RRGGBBAA"
というフォームを使用します。
完全に透明な色を表す NA です。
Charlotte Wickham 氏による munsell パッケージは、Albert H. Munsell 氏が設計したシステムを使って、特定の色を簡単に選ぶことができます。 このシステムを学ぶために少し投資すれば、美的に優れた色を指定する便利な方法を提供します。
線の外観は、色だけでなく、size
、linetype
、linejoin
、lineend
の影響を受けます。
線種は以下の方法で指定できます。
integer または name: 0 = blank, 1 = solid, 2 = dashed, 3 = dotted, 4 = dotdash, 5 = longdash, 6 = twodash, 以下のように指定します。
lty <- c("solid", "dashed", "dotted", "dotdash", "longdash", "twodash")
linetypes <- data.frame(
y = seq_along(lty),
lty = lty
)
ggplot(linetypes, aes(0, y)) +
geom_segment(aes(xend = 5, yend = y, linetype = lty)) +
scale_linetype_identity() +
geom_text(aes(label = lty), hjust = 0, nudge_y = 0.2) +
scale_x_continuous(NULL, breaks = NULL) +
scale_y_reverse(NULL, breaks = NULL)
線のオン/オフストレッチの長さです。 これは、2、4、6、または8桁の16進数を含む文字列を使って行われ、連続する長さを表します。 例えば、文字列"33"
は、3単位のオンと3単位のオフを指定し、"3313"
は、3単位のオンと3単位のオフ、そして1単位のオンと最後の3単位のオフを指定しています。
lty <- c("11", "18", "1f", "81", "88", "8f", "f1", "f8", "ff")
linetypes <- data.frame(
y = seq_along(lty),
lty = lty
)
ggplot(linetypes, aes(0, y)) +
geom_segment(aes(xend = 5, yend = y, linetype = lty)) +
scale_linetype_identity() +
geom_text(aes(label = lty), hjust = 0, nudge_y = 0.2) +
scale_x_continuous(NULL, breaks = NULL) +
scale_y_reverse(NULL, breaks = NULL)
前述の標準的なダッシュドットラインの5種類は、44、13、1343、73、2262に対応しています。
線の size
は、その幅を mm で表したものです。
線端の外観は lineend
パラメーターで制御され、“round”、“butt” (デフォルト)、“square” のいずれかを指定します。
df <- data.frame(x = 1:3, y = c(4, 1, 9))
base <- ggplot(df, aes(x, y)) + xlim(0.5, 3.5) + ylim(0, 10)
base +
geom_path(size = 10) +
geom_path(size = 1, colour = "red")
base +
geom_path(size = 10, lineend = "round") +
geom_path(size = 1, colour = "red")
base +
geom_path(size = 10, lineend = "square") +
geom_path(size = 1, colour = "red")
線結合の外観は linejoin
で制御され、“round”(デフォルト)、“mitre”、“bevel”のいずれかになります。
df <- data.frame(x = 1:3, y = c(9, 1, 9))
base <- ggplot(df, aes(x, y)) + ylim(0, 10)
base +
geom_path(size = 10) +
geom_path(size = 1, colour = "red")
base +
geom_path(size = 10, linejoin = "mitre") +
geom_path(size = 1, colour = "red")
base +
geom_path(size = 10, linejoin = "bevel") +
geom_path(size = 1, colour = "red")
mitre 結合は、角度が小さすぎる(非常に長いベベルを作成してしまう)場合、自動的に bevel 結合に変換されます。 これは linemitre
パラメータで制御され、線の幅と mitre の長さの最大比率を指定します。
多角形の境界は、前述のように color
, linetype
, size
の美学によって制御されます。 内側は fill
で制御されます。
シェイプは5種類の値を取ります。
\([0, 25]\) の integer です。
shapes <- data.frame(
shape = c(0:19, 22, 21, 24, 23, 20),
x = 0:24 %/% 5,
y = -(0:24 %% 5)
)
ggplot(shapes, aes(x, y)) +
geom_point(aes(shape = shape), size = 5, fill = "red") +
geom_text(aes(label = shape), hjust = 0, nudge_x = 0.15) +
scale_shape_identity() +
expand_limits(x = 4.2) +
theme_void()
(訳注: 上の図の右が切れていたため、x = 4.1
を x = 4.2
に変更しました。)
形の name :
shape_names <- c(
"circle", paste("circle", c("open", "filled", "cross", "plus", "small")), "bullet",
"square", paste("square", c("open", "filled", "cross", "plus", "triangle")),
"diamond", paste("diamond", c("open", "filled", "plus")),
"triangle", paste("triangle", c("open", "filled", "square")),
paste("triangle down", c("open", "filled")),
"plus", "cross", "asterisk"
)
shapes <- data.frame(
shape_names = shape_names,
x = c(1:7, 1:6, 1:3, 5, 1:3, 6, 2:3, 1:3),
y = -rep(1:6, c(7, 6, 4, 4, 2, 3))
)
ggplot(shapes, aes(x, y)) +
geom_point(aes(shape = shape_names), fill = "red", size = 5) +
geom_text(aes(label = shape_names), nudge_y = -0.3, size = 3.5) +
scale_shape_identity() +
theme_void()
single character: そのキャラクターをプロットのシンボルとして使います。
.
表示可能な最小の矩形(通常は1ピクセル)が描画されます。
NA
: 何も描きません。
図21~24は、ストロークの「色」と「塗りつぶし」の両方を持っていることに注意してください。 塗りつぶし部分の大きさは size
で制御され、ストロークの大きさは stroke
で制御されます。 それぞれのサイズは mm で表され、ポイントの合計サイズは 2 つのサイズの合計になります。 なお、次の図では、サイズは対角線上で一定です。
(訳注: 原文では font face となっていましたが、font family と解釈しました。)
どこでも使えることが保証されているフォントは 3 つしかありません。“sans”(デフォルト)、“serif”、“mono” です。
df <- data.frame(x = 1, y = 3:1, family = c("sans", "serif", "mono"))
ggplot(df, aes(x, y)) +
geom_text(aes(label = family, family = family))
テキストの描画はグラフィックデバイス(GD)ごとに異なるため、システムフォントをプロットに含めるのはより困難です。 一般的に使用されているGDは5つあり(png()
, pdf()
, Windows, Mac, Linuxのスクリーンデバイス)、 1つのフォントをどこでも使えるようにするには、5つのデバイスを5つの異なる方法で設定する必要があります。 2つのパッケージがこの問題を少しだけ解決してくれます。
showtext
は、すべてのテキストをポリゴンとしてレンダリングすることで、GDに依存しないプロットを作成します。
extrafont
は、フォントをすべてのデバイスで使用可能な標準フォーマットに変換します。
どちらの方法にも長所と短所がありますので、実際に両方を試してみて、 どちらが自分のニーズに合っているかを見極める必要があります。
文字の大きさを mm 単位で表します。これは珍しいことですが、文字の大きさを線や点の大きさと一致させるためです。 ggplot2 では、この変換係数を変数 .pt
で提供していますので、12ptのテキストを描きたい場合は、size = 12 / .pt
と設定します。
水平方向の位置と垂直方向の位置は同じパラメータで指定します。 値は、文字列(“top”, “middle”, “bottom”, “left”, “center”, “right”)か、0~1の数値を指定します。
just <- expand.grid(hjust = c(0, 0.5, 1), vjust = c(0, 0.5, 1))
just$label <- paste0(just$hjust, ", ", just$vjust)
ggplot(just, aes(hjust, vjust)) +
geom_point(colour = "grey70", size = 5) +
geom_text(aes(label = label, hjust = hjust, vjust = vjust))
なお、(0, 1)以外の数値を使用することも可能ですが、お勧めできません。