軸とテキスト

高水準作図関数 (e.g., plot, hist, boxplot, etc) は軸とテキストのオプションを指定できる。

# plot() 関数での指定
plot(x, y, main="タイトル", sub="サブタイトル",
  xlab="x軸ラベル", ylab="y軸ラベル",
  xlim=c(x軸最小値, x軸最大値), ylim=c(y軸最小値, y軸最大値))


以下の関数でより細かい指定が可能。また、以下も参照
R-tips: 低水準作図関数
Rjpwiki: ボックスと軸の形状

タイトル

title( ) 関数。図にラベルを追加する。

title(main="メインタイトル", sub="サブタイトル",
   xlab="x軸ラベル", ylab="y軸ラベル")

他の 作図パラメータ (サイズ、フォント、向き、色など) も title( ) 関数で指定できる

# 赤のメインタイトル、青のサブタイトル、x軸、y軸ラベルを25%小さくして緑色に
plot(1:10, xlab="", ylab="")
title(main="赤のメインタイトル", col.main="red",
  sub="青のサブタイトル", col.sub="blue",
  xlab="x軸ラベルl", ylab="y軸ラベルl",
  col.lab="green", cex.lab=0.75)

テキスト注釈

text( )mtext( ) 関数でテキストを追加できる。text( ) はグラフ内に追加、 mtext( ) はグラフの外の余白に追加。

text(location, "text to place", pos, ...)
mtext("text to place", side, line=n, ...)

オプション

option description
location x座量、y座標を指定する。locator(1)関数でマウスインタラクティブに場所を指定することもできる。
pos locationで指定した位置かた見てどこにテキストを挿入するか。 1=下, 2=左, 3=上, 4=右。 posでテキストを指定した場合、, offset= 関数で開始位置の微調整ができる。
side どこの余白にするか。1=下, 2=左, 3=上, 4=右。line= はグラフから何行離すか。adj=0 は左下そろえ。adj=1 右上そろえ。何も指定しないと中央

フォントサイズ、色、フォントは cex, col, , font で変更可能。

グラフ内のポイントにラベルをつける

text( ) 関数でグラフ内のポイントのラベルづけができる。x座標、y座標それぞれをベクトルで指定し、ラベルもベクトルにしておけばよい。x座標ベクトル、y座標ベクトル、ラベルのベクトルは同じ長さでないといけない。

# ポイントのラベルづけ
attach(mtcars)
wt ; length(wt)# x座標ベクトル
mpg ; length(mpg) # y座標ベクトル
row.names(mtcars) ; length(row.names(mtcars)) # ラベルのベクトル

plot(wt, mpg, main="Milage vs. Car Weight",
   xlab="Weight", ylab="Mileage", pch=18, col="blue")
text(wt, mpg, row.names(mtcars), cex=0.6, pos=4, col="red")

labeling points click to view

数式の挿入

TEXライクな感じで数式も挿入できる。demo(plotmath), help(plotmath) 参照。

軸のカスタマイズは axis( ) 関数を使う。

axis(side, at=, labels=, pos=, lty=, col=, las=, tck=, ...)

where

option description
side どの軸を操作するか数値で指定する。 1=下, 2=左, 3=上, 4=右。
at 目盛りをいくつとるか、ベクトルで指定する
labels 目盛りに付記されるラベル。指定しないと数値が使用される。
pos 軸のラインを描く座標位置。要は他の軸とどこで交わるか。pos=0なら原点で交わる。
lty 線のタイプ
col 線と目盛りマークの色
las ラベルの向き。0なら線と平行、2なら線と垂直。y軸を描くときはlas=2が普通かも。
tck 目盛りマークの長さ。負の数値だとグラフの外側、正の数値だとグラフの内側に目盛りマークが描かれる。0だと目盛りマークなし。1 (正の値) とするとグラフ内側にグリッド線が描ける。デフォルトは-0.01
(...) そのほか gグラフのパラメータ参照。

axis関数を使って軸を描く場合、高水準作図関数のなかでaxes=Fとしたり、xaxt="n" , yaxt="n"としたりして最初は軸を描かないように指定すること。

# 軸の一例

# データ生成
x <- c(1:10); y <- x; z <- 10/x

# 右側の余白を多めに取る
par(mar=c(5, 4, 4, 8) + 0.1)

# xとyのグラフ描画
plot(x, y,type="b", pch=21, col="red",
   yaxt="n", lty=3, xlab="", ylab="")

# x vs. 1/x の線を追加
lines(x, z, type="b", pch=22, col="blue", lty=2)

# 左側に軸を描く
axis(2, at=x,labels=x, col.axis="red", las=2)

# 右側に軸を描いて、小さめのテキスト、目盛りマークをつける
axis(4, at=z,labels=round(z,digits=2),
  col.axis="blue", las=2, cex.axis=0.7, tck=-.01)

# 右の軸にタイトルをつける
mtext("y=1/x", side=4, line=3, cex.lab=1,las=2, col="blue")

# メインタイトルをつける。下と左の軸にラベルをつける。
title("An Example of Creative Axes", xlab="X values",
   ylab="Y=X")

axis example click to view


小さい目盛りマーク

Hmisc パッケージのminor.tick( ) 関数で短めラベルなしの目盛りマークが描ける。

library(Hmisc)
plot(1:10)
minor.tick(nx=5, ny=2, tick.ratio=0.5) # ラベルつきの目盛りの間に短い目盛りを描画

x軸は大きい目盛りの間を5つに分け (nx=5)、y軸は同様に2つに分けた (ny=2)。長さは大きい目盛りの半分 (tick.ratio=0.5) 。


基準線

基準線を追加するには abline( ) 関数を使う。

abline(h=yvalues, v=xvalues)

他の グラフのパラメータ (e.g., line type, color, and width) も abline( ) 関数のなかで指定できる。

plot(1:10)
# yの値が1,5,7のところに水平線を描く。
abline(h=c(1,5,7))
# xの値が1,3,5,7,9のところに青い点線で垂直線を描く。
abline(v=seq(1,10,2),lty=2,col="blue")

Note: grid( ) 関数でも基準線を描くことができる。

凡例

凡例の追加には legend() 関数を使う。

legend(location, title, legend, ...)

option description
location 凡例の場所を指定するには複数の方法がある。
  1. 凡例ボックス左上のx座標、y座標を指定する。
  2. locator(1) 関数を使ってマウスで任意の位置を指定する。
  3. キーワード "bottom", "bottomleft", "left", "topleft", "top", "topright", "right", "bottomright", or "center"を使う。オプション inset= でどのくらいグラフの内側に動かすかを指定できる。
title 凡例タイトル
legend ラベルの文字列ベクトル
... その他のオプション
凡例の色を指定する: col= 。ラベルのポイント信b乗るを指定する: pch= 。ラベル線の太さ指定には lwd= 、線の種類指定にはor lty= 。棒グラフや箱ヒゲ図、円グラフなど凡例に色つき四角を使いたいときはfill=

bty= "n" にすると輪郭線なしの凡例ボックス。bg は凡例ボックスの背景色。cex でサイズ、strong>text.col で文字の色。horiz=TRUE だとラベルが横に並ぶ。FALSEだと縦に並ぶ。

attach(mtcars)
boxplot(mpg~cyl, main="Milage by Car Weight",
   yaxt="n", xlab="Milage", horizontal=TRUE,
   col=terrain.colors(3))
legend("topright", inset=.05, title="Number of Cylinders",
   c("4","6","8"), fill=terrain.colors(3), horiz=TRUE)

Legend example click to view

help(legend) の例が勉強になる。