53. グラフィックスパラメータ(弐)


グラフィックスパラメータの一時的変更

この節で紹介するグラフィックスパラメータは,関数 par() で設定することが出来るし,関数 plot() や多くの高水準作図関数の引数としてグラフィックスパラメータを設定することも出来る.例えばプロット点の形を指定するパラメータ pch に関しては,以下の 2 通りの設定方法を用いることが出来る.ただし,関数 par() で設定した場合は,設定した後はもう一度パラメータ値を変更するまではそのままの設定値が使われるが,作図関数の引数としてグラフィックスパラメータを設定した場合は,そのときの作図の場合のみ設定値が使われる (それ以後は直前までの設定値が使われる) . 

 
 plot(1:10, pch="+")     # 一時的にプロット点の形を "+" に変更する
 par(pch="+")            # これ以後,プロット点の形をずっと "+" に変更する
 plot(1:10)              # プロット点の形は "+" となる
 plot(1:20)              # これもプロット点の形は "+" となる

プロットに用いられる色

col と同様の命令で col.axis, col.lab, col.main, col.sub でそれぞれ軸,ラベル,タイトル,サブタイトルの色を指定することが出来る.

引数

機能

col = 1, col = blue

作図に用いる色 (color) を引数 col = 番号または色名で指定する

(初期値は 1 ) .番号は 1 から順に「黒,赤,緑,青,水色,紫,黄,灰」となっている.

col = rgb(1, 0, 0)

引数 col = rgb(赤,緑,青) で色を指定したり,16進数で色を指定することも出来る.

col = '\#FFFFFF' 

col = rainbow(10)

以下の表の他に,rainbow(n) ,heat.colors(n) ,terrain.colors(n) ,topo.colors(n) ,cm.colors(n) を col に指定して色を決めることも出来る.

col = hsv(.5, .5, .5)

それぞれ hsv 形式,グレースケールで色を決めることが出来る.

col = gray(0.8)

gamma = 1.0

ガンマ補正を行う.

プロットのマーカー

pch = 値 ,pch = "文字"  で,点をプロットするときに用いるプロット文字を指定する.値は 0 から 25 の整数,文字はピリオドや "+" などで指定する.

pch

 0

 1

 2

 3

 4

 5

 6

 7

 8

出力

 

pch

 9

 10

 11

 12

 13

 14

 15

 16

 17

出力

pch

 18

 19

20

21

22

23

24

25

 

出力

 

テキスト・フォントに関するパラメータ

文字列に関するグラフィックスパラメータには以下のようなものがある.以下の引数によって文字の大きさや描画方向などを設定することが出来る.

引数

関数

adj = 0

テキスト文字列の調節 ( 0:左揃え,0.5:中心揃え,1:右揃え) を行う.また,adj = c(x,y) で x 軸および y 軸方向を別々に揃えることも出来る.

cex = 1

標準の大きさを 1 として,文字の拡大率を指定する.csi を変更すると,このグラフィックスパラメータもその値に応じて自動的に変化する.同様の命令で cex.axis, cex.lab, cex.main, cex.sub でそれぞれ軸,ラベル,タイトル,サブタイトルの拡大率を指定する.

ps = 20

テキストと記号の大きさをポイント単位で指定する.

text(x, y, labels="文字列", srt=90)

座標 (x, y) に labels で指定した文字列を表示する際に,文字の回転角を (単位は度で) 指定する ( x 軸を基準とする) .また,引数 crt では文字の回転角を (単位は度で) 指定する.

col = 1

色を指定する.同様の命令で col.axis, col.lab, col.main, col.sub でそれぞれ軸,ラベル,タイトル,サブタイトルの色を指定する.

font = 1

フォント番号を指定する ( 1:プレイン,2:ボールド,3:イタリック,4:ボールドイタリック,5:シンボル文字(Adobe symbol encoding) ) .同様の命令で font.axis, font.lab, font.main, font.sub でそれぞれ軸,ラベル,タイトル,サブタイトルのフォント番号を指定する.

family=""

フォント・ファミリーを指定する.デフォルトは "" で,デバイスのデフォルト値になるよう設定されている.他には "serif","sans","mono","symbol" が指定できる(デバイスの種類によっては無視される).

線分の太さと形式

以下のパラメータが指定できる.

引数

機能

lwd = 1

線分の幅 (line width) を番号で指定する.値が大きいほど太い線になる.

lty=0 ,lty="blank"

線分の形式 (line type) を無し(透明の線)にする.

lty=1 ,lty="solid"

線分の形式 (line type) を実線にする.

lty=2 ,lty="dashed"

線分の形式 (line type) をダッシュにする.

lty=3 ,lty="dotted"

線分の形式 (line type) をドットにする.

lty=4 ,lty="dotdash"

線分の形式 (line type) をドットとダッシュにする.

lty=5 ,lty="longdash"

線分の形式 (line type) を長いダッシュにする.

lty=6 ,lty="twodash"

線分の形式 (line type) を二つのダッシュにする.

type = "p"

点プロット(デフォルト)を行う.

type = "l"

線プロット(折れ線グラフ)を行う.

type = "b"

点と線のプロットを行う.

type = "c"

"b" において点を描かないプロットを行う.

type = "o"

点プロットと線プロットの重ね書きを行う.

type = "h"

各点からx軸までの垂線プロットを行う.

type = "s"

左側の値にもとづいて階段状に結ぶ.

type = "S"

右側の値にもとづいて階段状に結ぶ.

type = "n"

軸だけ描いてプロットしない(続けて低水準関数で作図する場合).

他にも 'lend'(線分の終端;0:"round",1:"butt",2:"square"),'lheight','ljoin'(線分の結合形式;0:"round",1:"mitre",2:"bevel"),'lmitre' が指定できる.

枠に関するパラメータ

引数

機能

bg = "blue"

背景の色を指定する.

fg = "blue"

前面の色を指定する.

bty = "o"

枠が箱型,四方が囲まれている形になる.

bty = "l"

枠が L 字型,左と下部だけに枠の線が引かれる.

bty = "7"

枠が 7 型,上部と右だけに枠の線が引かれる.

bty = "c"

枠が C 字型,右部を除き枠の線が引かれる.

bty = "u"

枠が u 字型,上部を除き枠の線が引かれる.

bty = "]"

枠が ] 字型,左部を除き枠の線が引かれる.

bty = "n"

枠を描かない (箱を描く) .

軸に関するパラメータ

引数

機能

ann = F

FALSE を指定すると,軸と全体のタイトルを描かなくなる.

las = 0

ラベルを各軸に並行して描く.

las = 1

ラベルをすべて水平に描く.

las = 2

ラベルを軸に対して垂直に描く.

las = 3

ラベルをすべて垂直に描く.

lab = c(5,5,7)

長さ 3 の数値ベクトルの最初の二つで x ,y 軸につける目盛の数を指定する.最後の一つはラベルのサイズを指定するはずだが,今のところ ( R 2.2.1 ) は移植されていない.

mgp = c(3,1,0)

長さ 3 の数値ベクトルでそれぞれ軸タイトル,軸ラベル,軸線が描かれる位置を枠から何行分 (mex 単位) 外側にするかを指定する.

tck = NA

軸の目盛線の長さを枠の大きさに対する割合で指定し,値が正ならば線が図の内側に,値が負ならば図の外側に目盛線が描かれる.ここで tck = 1 とすれば,図に格子を入れることが出来る.初期値は NA だが,これは tcl = -0.5 を用いるという意味である.

tcl = -0.5

軸の目盛線の長さをテキスト行の高さ (mex) の割合で指定する.正の値を指定すれば目盛を内側に向かって描き,負の値なら外側に描く.もし tcl = NA とすれば,tck に -0.01 がセットされる.

xaxt  = "s" ,yaxt = "s"

軸を描くか否かを指定する.この場合は通常の軸が使われていることを示す("l" や "t" を指定しても同じ働き).

xaxt  = "n" ,yaxt = "n"

軸を描くか否かを指定する.この場合は軸を描かない.xaxt = "n" と yaxt = "n" を同時に指定すると axes = F と同じになる.

xaxs = "r" ,yaxs = "r"

x ,y 軸のスタイルを指定する.まずデータ範囲を両側 4 \% 広げ,次に範囲内でラベルがきれいに表示できる軸を見つける.

xaxs = "i" ,yaxs = "i"

x ,y 軸のスタイルを指定する.データ範囲内できれいに表示できる軸を見つける.

par(xaxp) ,par(yaxp)

x,y 軸の目盛りの区切りを参照する.最初の二つが両端の目盛りの座標,最後の値がその内側の区切りの個数を表す.値自体を変更してもあまり意味が無い.

xlog = F ,ylog = F

それぞれ対数 x 軸,対数 y 軸の使用を論理値で指定する.もし TRUE ならば対数軸が使われる.新しいデバイスに対しては既定値は FALSE に設定される.

 


ここで,色についての補足事項をいくつか述べる.

RGBで色を指定( 引数 cm.colors )

上記で紹介したように,「col="色名"」 で色を決めることも出来るが,引数 col=rgb(赤,緑,青) で指定して色を決めることが出来る.

 
plot(sin, col=rgb(1,0,0))

使用可能な色の一覧

関数 colors() で,R で使うことが出来る色の一覧が表示される.

 
 colors()

  [1] "white"                "aliceblue"            "antiquewhite"        
  [4] "antiquewhite1"        "antiquewhite2"        "antiquewhite3"       
  [7] "antiquewhite4"        "aquamarine"           "aquamarine1"  
  .................................................................
[655] "yellow3"              "yellow4"              "yellowgreen"

●色で12段階を指定

関数 rainbow(n) ,heat.colors(n) ,terrain.colors(n) ,topo.colors(n) ,cm.colors(n) などで色を決めることも出来る.

虹色で12段階を指定( 引数 rainbow )

 
 pie(rep(1, 12), col = rainbow(12))

暖色で色を指定( 引数 heat.colors )

 
 pie(rep(1, 12), col = heat.colors(12))

寒色で色を指定( 引数 cm.colors )

 
 pie(rep(1, 12), col = cm.colors(12))

サンプル

 
 demo.pal <- function(
   n, border = if (n<32) "light gray" else NA,
   main = paste("color palettes;  n=",n),
   ch.col = c("rainbow(n, start=.7, end=.1)", "heat.colors(n)",
              "terrain.colors(n)", "topo.colors(n)", "cm.colors(n)"))
   {
     nt <- length(ch.col)
     i <- 1:n; j <- n / nt; d <- j/6; dy <- 2*d
     plot(i,i+d, type="n",yaxt="n",ylab="",main=main)
     for (k in 1:nt) {
       rect(i-.5, (k-1)*j+ dy, i+.4, k*j,
       col = eval(parse(text=ch.col[k])), border = border)
       text(2*j,k * j +dy/4, ch.col[k])
     }
   }
   n <- if(.Device == "postscript") 64 else 16
   demo.pal(n)