grid パッケージ事始
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
SIZE(25){COLOR(red){grid パッケージ事始}}
* COLOR(orange){とりあえず} [#qefa4d47]
[[Paul Murrell 先生のホームページ:http://www.stat.aucklan...
* COLOR(green){グリッド・グラフィックスとは} [#u8175c38]
グリッド・グラフィックスパッケージ(grid graphics package...
とは別に用意されている標準 R グラフィックス・パッケージで...
ユーザーは作図デバイス上で任意の長方形の表示域(viewports...
各表示域の多くの座標系を定義することが出来る.
グリッド・グラフィックスの利点は,R の graphics パッケー...
カスタマイズが自由に出来る点である.graphics パッケージ中...
低水準作図関数では十分な作図が得られない時に力を発揮し,...
パッケージ中の作図関数にはグリッド・グラフィックス中の関...
以下に特徴を挙げる.
- 作図のカスタマイズが容易に行える.
- グラフィックス出力の道具として「線・長方形・円・多角形...
- 現在位置(current location)という概念があり,1 回の作...
(Graphics Regions)と座標系(Coodinate Systems)を作成・...
- グラフィックス・オブジェクト(grob)という概念があり,...
グラフィックス用のオブジェクトをカスタマイズすることが出...
- ただし,グリッド・グラフィックスと標準 R グラフィックス...
* COLOR(green){グリッド・グラフィックス事始} [#p6f0216d]
まず,グリッド・グラフィックスのパッケージを呼び出す.
library(grid)
デモは関数 grid.plot.and.legend() で見ることが出来る.こ...
グリッド・グラフィックスを用いた作図の手順を見ることが出...
grid.multipanel(vp=viewport(0.5, 0.5, 0.8, 0.8)) # デモ...
grid.plot.and.legend() # デモ...
grid.plot.and.legend # 関数...
#ref(grid パッケージ事始/grid-01.gif, center)
* COLOR(blue){グラフィックス出力関数} [#pc85c486]
関数 grid.newpage() で,作図デバイスを初期化(全消去)す...
新しく作図を行う場合や,直前までの作図を全て消去したい場...
grid.newpage()
作図デバイスを初期化した後はいろいろ作図を行うわけだが,...
R の graphics パッケージの低(高)水準作図関数と似たよう...
以下の関数のオプション draw は,全て TRUE になっている.
| grid.arrows(x = c(0.25, 0.75), y = 0.5) | 矢印を描く ...
| grid.circle(x=0.5, y=0.5, r=0.5) | 円を描く ...
| grid.frame(name=NULL, gp=gpar(), vp=NULL)| 枠を描く ...
| grid.grill(h = seq(0.25, 0.75, 0.25), v = seq(0.25, 0.7...
| grid.lines(x = c(0.25, 0.75), y = 0.5) | 線を描く ...
| grid.line.to(x=1, y=1) | 線を描く ...
| grid.points(x, y) | データを点で...
| grid.polygon(x=c(0, 0.5, 1, 0.5), y=c(0.5, 1, 0.5, 0)) ...
| grid.rect(x = 0.5, y = 0.5, width = 0.7, height = 0.3) ...
| grid.segments(x0 = 0, y0 = 0, x1 = 0.5, y1 = 0.5) ...
| grid.text(label="abc", x = 0.5, y = 0.5) ...
| grid.xaxis(at = NULL, label = T, main = T, name = NULL)...
| grid.yaxis(at = NULL, label = T, main = T, name = NULL)...
* COLOR(purple){作図領域と座標系} [#yfb9b0d5]
グリッド・グラフィックスを行うときは,作図領域(Graphics ...
(Coordinate Systems)を常に意識する必要がある.作図領域...
viewport() を用いる.ちなみに viewport は「表示域」という...
viewport(x=座標, y=座標, width=幅, height=高さ, just = "...
作図領域は,まず領域の中心の ( x 座標,y 座標 ) を指定し...
デフォルトでは領域の中心が基準点となっているが,基準点を...
「just=c("left", "bottom")」を指定する.また,座標領域を...
を指定すればよい.~
作図領域(viewport)は生成された順に木構造(時には入れ子...
複数の作図領域を生成しておいて,作図途中に任意の作図領域...
現在使っている作図領域が不要になった場合は,その作図領域...
これらの動作はそれぞれ関数 pushViewport(),popViewport() ...
作図領域 viewport は木構造になっているので,作図領域を po...
関数 upViewport(上に上がる階層数) と downViewport(木の下...
で作図領域を操作することも出来,seekViewport(オブジェクト...
関数 current.viewport() で viewport の構造を見ることも出...
.
pushViewport( viewport オブジェクト) # viewport の呼び...
popViewport( viewport オブジェクト) # viewport の破棄
例として,まず vp1 というオブジェクトに作図領域を代入し,...
(呼び出し)する.次に,作図領域 vp1 に x 軸や y 軸などを...
grid.newpage()
vp1 <- viewport(x=0.5, y=0.5, w=0.8, h=0.8,
xscale=c(0,10), yscale=c(0,10))
pushViewport(vp1) # vp1 を呼び出す
grid.rect() # 長方形で囲む
grid.xaxis() # x 軸を描く
grid.yaxis() # y 軸を描く
popViewport() # vp1 を破棄する
続いて,vp2 というオブジェクトに作図領域を代入し,作図デ...
(呼び出し)する.次に,作図領域 vp2 に x 軸や y 軸などを...
vp2 <- viewport(x=0.5, y=0.5, w=0.2, h=0.2,
xscale=c(0,10), yscale=c(0,10))
pushViewport(vp2) # vp2 を呼び出す
grid.rect() # 長方形で囲む
grid.points(x=1:10, y=1:10) # vp2 に点を 10 個描く
grid.xaxis() # x 軸を描く
grid.yaxis() # y 軸を描く
popViewport() # vp2 を破棄する
vp1 と vp2 にはほぼ同じ作図を施したのだが,vp2 が vp1 よ...
さも大小 2 つの座標軸が出来上がっているかのような出力とな...
グリッド・グラフィックスでは1 回の作図ごとに作図領域を指...
より柔軟な作図を実現している.
#ref(grid パッケージ事始/grid-02.gif, center)
作図領域オブジェクトがどのような作図領域になっているかを...
関数 grid.show.viewport() を使用する.
grid.show.viewport(vp1)
grid.show.viewport(vp2)
#ref(grid パッケージ事始/grid-03.gif, center)
* COLOR(black){座標系と単位} [#o43c3de5]
関数 unit() で座標系に関する単位を決める.これにより,作...
指定が行える(最も使われるのは "npc" である).以下に関数...
unit(1, "npc")
unit(1:3/4, "npc")
unit.c(unit(0.5,"npc"), unit(1,"mm")+unit(0.2,"cm"))
実際,viewport() に指定する場合は以下の様にする.
pushViewport( viewport(xscale=c(0,100)) )
pushViewport(
viewport(x=unit(50, "native"), y=unit(0.5, "npc"),
w=stringWidth("A example of Coodinates"),
h=unit(3, "lines"))
)
grid.rect()
popViewport()
#ref(grid パッケージ事始/grid-04.gif, center)
単位の種類は以下の通り.
| 単位 | 説明|
| "npc" | 左下を (0, 0),右上を (1, 1) とした標準座...
| "native" | 位置と大きさを現在の表示域(current viewp...
| "inches" | 左下を (0, 0) として,inch 単位で座標を決...
| "cm" | 左下を (0, 0) として,cm で座標を決める|
| "mm" | 左下を (0, 0) として,mm で座標を決める|
| "points" | 左下を (0, 0) として,points(1/72.27 inc...
| "bigpts" | 左下を (0, 0) として,bigpts(1/72 inches...
| "picas" | 左下を (0, 0) として,picas(12 points)...
| "dida" | 左下を (0, 0) として,dida(1157/1238 poi...
| "cicero" | 左下を (0, 0) として,cicero(12 didas)...
| "scaledpts" | 左下を (0, 0) として,scaledpts(65536 po...
| "char" | 位置と大きさを現在の fontheight に合わせる|
| "lines" | 位置と大きさを文字列の高さ(現在の fonthe...
| "snpc" | 左下を (0, 0),右上を (1, 1) として,現在...
| "strwidth" | 位置と大きさを与えられた文字の幅(文字と...
| "strheight" | 位置と大きさを与えられた文字の高さ(文字...
| "grobwidth" | 位置と大きさを与えられた grob の幅(現在...
| "grobheight"| 位置と大きさを与えられた grob の高さ(現...
座標つきのグラフを作るときには、"native" をよく使う。
grid.point() 関数の場合は、default.unit="native" であるた...
それ以外の関数はほとんど default.unit="npc" であるため、...
以下は、xy座標の(1,1)から(2,3)に線分を引く例。
grid.newpage()
vp1 <- viewport(xscale=c(0,10), yscale=c(0,10), w=0.9, h...
pushViewport(vp1) # 座標設定を呼び出し
grid.xaxis() # x軸を描く
grid.yaxis() # y軸を描く
grid.lines(c(1,2),c(1,3), default.unit="native") #(1,1...
* COLOR(red){グリッド・グラフィックスパラメータ} [#w0f7b0...
作図領域およびグラフ式のオブジェクトはすべてグリッド・グ...
を含んでいる.作図領域が「作図領域スタック」に push され...
オブジェクトが描かれる際に,現在指定している gpar の設定...
使い方や概念は,普通のグラフィックスパラメータとほぼ同様...
gpar() # グラフィックスパラメータの指定
get.gpar(names = NULL) # パラメータ情報の取得
get.gpar() # 現在の全グラフィックスパラメー...
以下に一覧を示す.
| 名前 | 機能 ...
| col | 線とボーダーの色 ...
| fill | 塗りつぶしの色(例:rectangles,polygons...
| lty | 線の形式 ...
| lwd | 線の太さ(線のサイズ:fontsize × cex × li...
| fontsize | フォントサイズ(単位はポイント) ...
| cex | フォントサイズの倍率 ...
| fontfamily | フォントファミリー(例:HersheySerif) ...
| fontface | フォントの種類(1 = plain, 2 = bold, 3 = ...
| lineheight | 線の高さ(テキストサイズ=fontsize × cex ...
| font | フォント ...
グリッド・グラフィックスパラメータの使用例として,作図領...
pushViewport( viewport(gp=gpar(fill="grey")) )
grid.rect()
grid.rect(w=0.8, h=0.6, gp=gpar(fill="white"))
grid.text("inner rectangle", y=0.75)
grid.text("outer rectangle", y=0.05)
popViewport()
#ref(grid パッケージ事始/grid-05.gif, center)
* COLOR(orange){レイアウト} [#gad8b010]
作図領域をいくつかの行と列に分割することが出来,分割する...
grid.layout(行数, 列数, width, height, ... )
viewport( layout=grid.layout(行数, 列数, width, height, ...
以下に作図領域を分割する例を示す.引数 respect=T で幅と高...
また,作図領域がどのようなレイアウトになっているかを見る...
grid.show.layout() を使用する.
grid.newpage()
gl <- grid.layout(2, 3, respect=T,
h=unit(c(0.5, 1, 2), c("cm", "null", "mm")) )
grid.show.layout(gl)
#ref(grid パッケージ事始/grid-06.gif, center)
実際の作図例は以下の通り.以下では 3 × 4 に分割した領域を...
分割した領域の一部分を作図領域としてから領域を長方形で囲...
grid.newpage()
pushViewport( viewport(layout=grid.layout(3, 4)) )
grid.rect(gp=gpar(col="grey"))
grid.segments( c(1:3/4, rep(0,2)), c(rep(0,3), 1:2/3),
c(1:3/4, rep(1,2)), c(rep(1,3), 1:2/3),
gp=gpar(col="grey") )
pushViewport( viewport(layout.pos.col=2:3, layout.pos.ro...
grid.rect()
popViewport(2)
#ref(grid パッケージ事始/grid-07.gif, center)
* COLOR(green){grobの作成} [#x7ff0b66]
R の graphics パッケージ中の関数ならば,作図の命令を行え...
一方,グリッド・グラフィックスには grob(Grid Graphics Ob...
という概念がある.これは作図に関する情報をオブジェクトと...
このオブジェクトを直ちに作図デバイスに出力することも出来...
いろいろと加工した後に作図デバイスに出力することも出来る...
の柔軟性を支える屋台骨となっている.grob を作成する関数は...
| arrowsGrob(x = c(0.25, 0.75), y = 0.5) |...
| circleGrob(x=0.5, y=0.5, r=0.5) |...
| frameGrob(name=NULL, gp=gpar(), vp=NULL) |...
| linesGrob(x = c(0.25, 0.75), y = 0.5) |...
| lineToGrob(x=1, y=1) |...
| pointsGrob(x, y) |...
| polygonGrob(x=c(0, 0.5, 1, 0.5), y=c(0.5, 1, 0.5, 0)) |...
| rectGrob(x = 0.5, y = 0.5, width = 0.7, height = 0.3) |...
| segmentsGrob(x0 = 0, y0 = 0, x1 = 0.5, y1 = 0.5) |...
| textGrob(label, x = 0.5, y = 0.5) |...
| xaxisGrob(at = NULL, label = T, main = T, name = NULL)|...
| yaxisGrob(at = NULL, label = T, main = T, name = NULL)|...
grob を編集する基本関数は grid.edit() である.また,関数 ...
grob を出力することが出来,関数 gTree() でいくつかの grob...
それらを単一のオブジェクトとして扱うことが出来る.~
関数 grid.edit() の簡単な使用例を挙げる.
grid.newpage()
grid.xaxis(name="xa", vp=viewport(w=.5, h=.5)) # x 軸
grid.edit("xa", gp=gpar(col="red")) # 赤に変更
#ref(grid パッケージ事始/grid-08.gif, center)
「線を引く」という grob を生成し,次にこの grob を作図デ...
grid.newpage()
line <- linesGrob()
grid.draw(line)
#ref(grid パッケージ事始/grid-09.gif, center)
grob である "line" を関数 editGrob() で編集し,色を緑に変...
line <- editGrob(line, gp=gpar(col="green"))
grid.draw(line)
#ref(grid パッケージ事始/grid-10.gif, center)
grob には grob の名前でアクセスすることも出来る.名前でア...
関数 gPath() を用いる方法と,名前をそのまま指定する方法と...
grid.newpage()
grid.lines(name="gl")
grid.edit(gPath("gl"), gp=gpar(col="red")) # gl を赤に...
grid.edit("gl", gp=gpar(col="blue")) # gl を青に...
#ref(grid パッケージ事始/grid-11.gif, center)
関数 grid.frame() を使う場合,まず grid.frame() で枠のオ...
を作成してから,次に関数 grid.pack() でオブジェクトを出力...
gp で装飾を施す( gpar を変更する)ことが出来る.
grid.newpage()
grid.frame(name="gf", draw=TRUE)
grid.pack("gf", rectGrob(gp=gpar(fill="grey")))
grid.pack("gf", textGrob("hi there"), side="right")
#ref(grid パッケージ事始/grid-12.gif, center)
* COLOR(green){オブジェクトのセーブ・ロード} [#jde300ec]
作図をファイルに保存する場合は関数 save() を用いる.保存...
grid.newpage()
grid.grill() # 網目を描く
tmp <- recordPlot() # 現在の作図を tmp に代入
save(tmp, file="tmp-041123") # ファイル tmp-041123 に保存
ファイルに保存した作図をロードする場合は関数 load() を用...
load("tmp-041123")
tmp # 保存した tmp を呼び出す
この操作は grob に対しても実行できる.
temp <- textGrob("Hello world.")
save(temp, file="temp-041123")
load("temp-041123")
grid.draw(temp) # 保存した temp を呼び出す
* COLOR(blue){グリッド・グラフィックスを使った作図例} [#l...
(いろいろ投稿していただけますと幸いです)
お言葉に甘えて,使い方の例だけ
t <- seq(0, 360, by=5)
radian <- function(degree) {
degree/180*pi
}
l <- 0.18
ox <- l*cos(radian(t))
oy <- l*sin(radian(t))
grid.newpage()
viewport(x=0.250,y=0.250,w=0.500,h=0.500)
grid.rect()
for (i in 1:length(t)) {
grid.circle(ox[i]+0.65, oy[i]+0.5,
sqrt((ox[i]-ox[1])^2+(oy[i]-oy[1])^2))
}
#ref(grid パッケージ事始/cardioid.png)
数式も書けます
grid.newpage()
grid.text(expression(z[i] == sqrt(x[i]^2 + y[i]^2)),
gp=gpar(cex=2))
#ref(grid パッケージ事始/math.gif)
正方形を描いてみました.
grid.newpage()
pushViewport(viewport(w=.5, h=.5, name="A"))
grid.rect()
pushViewport(viewport(w=.5, h=.5, name="B"))
grid.rect(gp=gpar(col="grey"))
upViewport(2)
grid.rect(vp="A", gp=gpar(fill="red"))
grid.rect(vp=vpPath("A", "B"), gp=gpar(fill="blue"))
grid.newpage()
grid.polygon(x=c((0:4)/10, rep(.5, 5), (10:6)/10, rep(.5...
y=c(rep(.5, 5), (10:6/10), rep(.5, 5), (0:4...
id=rep(1:5, 4), gp=gpar(fill=1:5))
#ref(grid パッケージ事始/square.gif)
* COLOR(purple){ご意見など} [#ted200f8]
いろいろご意見をいただけますと幸いです.間違い修正・改善...
->お言葉に甘えて,使い方の例だけ~
早速,使い方の例を示していただきましてありがとうございま...
-関数 radian() の定義が抜けていたようなので,勝手ながら関...
#comment
終了行:
SIZE(25){COLOR(red){grid パッケージ事始}}
* COLOR(orange){とりあえず} [#qefa4d47]
[[Paul Murrell 先生のホームページ:http://www.stat.aucklan...
* COLOR(green){グリッド・グラフィックスとは} [#u8175c38]
グリッド・グラフィックスパッケージ(grid graphics package...
とは別に用意されている標準 R グラフィックス・パッケージで...
ユーザーは作図デバイス上で任意の長方形の表示域(viewports...
各表示域の多くの座標系を定義することが出来る.
グリッド・グラフィックスの利点は,R の graphics パッケー...
カスタマイズが自由に出来る点である.graphics パッケージ中...
低水準作図関数では十分な作図が得られない時に力を発揮し,...
パッケージ中の作図関数にはグリッド・グラフィックス中の関...
以下に特徴を挙げる.
- 作図のカスタマイズが容易に行える.
- グラフィックス出力の道具として「線・長方形・円・多角形...
- 現在位置(current location)という概念があり,1 回の作...
(Graphics Regions)と座標系(Coodinate Systems)を作成・...
- グラフィックス・オブジェクト(grob)という概念があり,...
グラフィックス用のオブジェクトをカスタマイズすることが出...
- ただし,グリッド・グラフィックスと標準 R グラフィックス...
* COLOR(green){グリッド・グラフィックス事始} [#p6f0216d]
まず,グリッド・グラフィックスのパッケージを呼び出す.
library(grid)
デモは関数 grid.plot.and.legend() で見ることが出来る.こ...
グリッド・グラフィックスを用いた作図の手順を見ることが出...
grid.multipanel(vp=viewport(0.5, 0.5, 0.8, 0.8)) # デモ...
grid.plot.and.legend() # デモ...
grid.plot.and.legend # 関数...
#ref(grid パッケージ事始/grid-01.gif, center)
* COLOR(blue){グラフィックス出力関数} [#pc85c486]
関数 grid.newpage() で,作図デバイスを初期化(全消去)す...
新しく作図を行う場合や,直前までの作図を全て消去したい場...
grid.newpage()
作図デバイスを初期化した後はいろいろ作図を行うわけだが,...
R の graphics パッケージの低(高)水準作図関数と似たよう...
以下の関数のオプション draw は,全て TRUE になっている.
| grid.arrows(x = c(0.25, 0.75), y = 0.5) | 矢印を描く ...
| grid.circle(x=0.5, y=0.5, r=0.5) | 円を描く ...
| grid.frame(name=NULL, gp=gpar(), vp=NULL)| 枠を描く ...
| grid.grill(h = seq(0.25, 0.75, 0.25), v = seq(0.25, 0.7...
| grid.lines(x = c(0.25, 0.75), y = 0.5) | 線を描く ...
| grid.line.to(x=1, y=1) | 線を描く ...
| grid.points(x, y) | データを点で...
| grid.polygon(x=c(0, 0.5, 1, 0.5), y=c(0.5, 1, 0.5, 0)) ...
| grid.rect(x = 0.5, y = 0.5, width = 0.7, height = 0.3) ...
| grid.segments(x0 = 0, y0 = 0, x1 = 0.5, y1 = 0.5) ...
| grid.text(label="abc", x = 0.5, y = 0.5) ...
| grid.xaxis(at = NULL, label = T, main = T, name = NULL)...
| grid.yaxis(at = NULL, label = T, main = T, name = NULL)...
* COLOR(purple){作図領域と座標系} [#yfb9b0d5]
グリッド・グラフィックスを行うときは,作図領域(Graphics ...
(Coordinate Systems)を常に意識する必要がある.作図領域...
viewport() を用いる.ちなみに viewport は「表示域」という...
viewport(x=座標, y=座標, width=幅, height=高さ, just = "...
作図領域は,まず領域の中心の ( x 座標,y 座標 ) を指定し...
デフォルトでは領域の中心が基準点となっているが,基準点を...
「just=c("left", "bottom")」を指定する.また,座標領域を...
を指定すればよい.~
作図領域(viewport)は生成された順に木構造(時には入れ子...
複数の作図領域を生成しておいて,作図途中に任意の作図領域...
現在使っている作図領域が不要になった場合は,その作図領域...
これらの動作はそれぞれ関数 pushViewport(),popViewport() ...
作図領域 viewport は木構造になっているので,作図領域を po...
関数 upViewport(上に上がる階層数) と downViewport(木の下...
で作図領域を操作することも出来,seekViewport(オブジェクト...
関数 current.viewport() で viewport の構造を見ることも出...
.
pushViewport( viewport オブジェクト) # viewport の呼び...
popViewport( viewport オブジェクト) # viewport の破棄
例として,まず vp1 というオブジェクトに作図領域を代入し,...
(呼び出し)する.次に,作図領域 vp1 に x 軸や y 軸などを...
grid.newpage()
vp1 <- viewport(x=0.5, y=0.5, w=0.8, h=0.8,
xscale=c(0,10), yscale=c(0,10))
pushViewport(vp1) # vp1 を呼び出す
grid.rect() # 長方形で囲む
grid.xaxis() # x 軸を描く
grid.yaxis() # y 軸を描く
popViewport() # vp1 を破棄する
続いて,vp2 というオブジェクトに作図領域を代入し,作図デ...
(呼び出し)する.次に,作図領域 vp2 に x 軸や y 軸などを...
vp2 <- viewport(x=0.5, y=0.5, w=0.2, h=0.2,
xscale=c(0,10), yscale=c(0,10))
pushViewport(vp2) # vp2 を呼び出す
grid.rect() # 長方形で囲む
grid.points(x=1:10, y=1:10) # vp2 に点を 10 個描く
grid.xaxis() # x 軸を描く
grid.yaxis() # y 軸を描く
popViewport() # vp2 を破棄する
vp1 と vp2 にはほぼ同じ作図を施したのだが,vp2 が vp1 よ...
さも大小 2 つの座標軸が出来上がっているかのような出力とな...
グリッド・グラフィックスでは1 回の作図ごとに作図領域を指...
より柔軟な作図を実現している.
#ref(grid パッケージ事始/grid-02.gif, center)
作図領域オブジェクトがどのような作図領域になっているかを...
関数 grid.show.viewport() を使用する.
grid.show.viewport(vp1)
grid.show.viewport(vp2)
#ref(grid パッケージ事始/grid-03.gif, center)
* COLOR(black){座標系と単位} [#o43c3de5]
関数 unit() で座標系に関する単位を決める.これにより,作...
指定が行える(最も使われるのは "npc" である).以下に関数...
unit(1, "npc")
unit(1:3/4, "npc")
unit.c(unit(0.5,"npc"), unit(1,"mm")+unit(0.2,"cm"))
実際,viewport() に指定する場合は以下の様にする.
pushViewport( viewport(xscale=c(0,100)) )
pushViewport(
viewport(x=unit(50, "native"), y=unit(0.5, "npc"),
w=stringWidth("A example of Coodinates"),
h=unit(3, "lines"))
)
grid.rect()
popViewport()
#ref(grid パッケージ事始/grid-04.gif, center)
単位の種類は以下の通り.
| 単位 | 説明|
| "npc" | 左下を (0, 0),右上を (1, 1) とした標準座...
| "native" | 位置と大きさを現在の表示域(current viewp...
| "inches" | 左下を (0, 0) として,inch 単位で座標を決...
| "cm" | 左下を (0, 0) として,cm で座標を決める|
| "mm" | 左下を (0, 0) として,mm で座標を決める|
| "points" | 左下を (0, 0) として,points(1/72.27 inc...
| "bigpts" | 左下を (0, 0) として,bigpts(1/72 inches...
| "picas" | 左下を (0, 0) として,picas(12 points)...
| "dida" | 左下を (0, 0) として,dida(1157/1238 poi...
| "cicero" | 左下を (0, 0) として,cicero(12 didas)...
| "scaledpts" | 左下を (0, 0) として,scaledpts(65536 po...
| "char" | 位置と大きさを現在の fontheight に合わせる|
| "lines" | 位置と大きさを文字列の高さ(現在の fonthe...
| "snpc" | 左下を (0, 0),右上を (1, 1) として,現在...
| "strwidth" | 位置と大きさを与えられた文字の幅(文字と...
| "strheight" | 位置と大きさを与えられた文字の高さ(文字...
| "grobwidth" | 位置と大きさを与えられた grob の幅(現在...
| "grobheight"| 位置と大きさを与えられた grob の高さ(現...
座標つきのグラフを作るときには、"native" をよく使う。
grid.point() 関数の場合は、default.unit="native" であるた...
それ以外の関数はほとんど default.unit="npc" であるため、...
以下は、xy座標の(1,1)から(2,3)に線分を引く例。
grid.newpage()
vp1 <- viewport(xscale=c(0,10), yscale=c(0,10), w=0.9, h...
pushViewport(vp1) # 座標設定を呼び出し
grid.xaxis() # x軸を描く
grid.yaxis() # y軸を描く
grid.lines(c(1,2),c(1,3), default.unit="native") #(1,1...
* COLOR(red){グリッド・グラフィックスパラメータ} [#w0f7b0...
作図領域およびグラフ式のオブジェクトはすべてグリッド・グ...
を含んでいる.作図領域が「作図領域スタック」に push され...
オブジェクトが描かれる際に,現在指定している gpar の設定...
使い方や概念は,普通のグラフィックスパラメータとほぼ同様...
gpar() # グラフィックスパラメータの指定
get.gpar(names = NULL) # パラメータ情報の取得
get.gpar() # 現在の全グラフィックスパラメー...
以下に一覧を示す.
| 名前 | 機能 ...
| col | 線とボーダーの色 ...
| fill | 塗りつぶしの色(例:rectangles,polygons...
| lty | 線の形式 ...
| lwd | 線の太さ(線のサイズ:fontsize × cex × li...
| fontsize | フォントサイズ(単位はポイント) ...
| cex | フォントサイズの倍率 ...
| fontfamily | フォントファミリー(例:HersheySerif) ...
| fontface | フォントの種類(1 = plain, 2 = bold, 3 = ...
| lineheight | 線の高さ(テキストサイズ=fontsize × cex ...
| font | フォント ...
グリッド・グラフィックスパラメータの使用例として,作図領...
pushViewport( viewport(gp=gpar(fill="grey")) )
grid.rect()
grid.rect(w=0.8, h=0.6, gp=gpar(fill="white"))
grid.text("inner rectangle", y=0.75)
grid.text("outer rectangle", y=0.05)
popViewport()
#ref(grid パッケージ事始/grid-05.gif, center)
* COLOR(orange){レイアウト} [#gad8b010]
作図領域をいくつかの行と列に分割することが出来,分割する...
grid.layout(行数, 列数, width, height, ... )
viewport( layout=grid.layout(行数, 列数, width, height, ...
以下に作図領域を分割する例を示す.引数 respect=T で幅と高...
また,作図領域がどのようなレイアウトになっているかを見る...
grid.show.layout() を使用する.
grid.newpage()
gl <- grid.layout(2, 3, respect=T,
h=unit(c(0.5, 1, 2), c("cm", "null", "mm")) )
grid.show.layout(gl)
#ref(grid パッケージ事始/grid-06.gif, center)
実際の作図例は以下の通り.以下では 3 × 4 に分割した領域を...
分割した領域の一部分を作図領域としてから領域を長方形で囲...
grid.newpage()
pushViewport( viewport(layout=grid.layout(3, 4)) )
grid.rect(gp=gpar(col="grey"))
grid.segments( c(1:3/4, rep(0,2)), c(rep(0,3), 1:2/3),
c(1:3/4, rep(1,2)), c(rep(1,3), 1:2/3),
gp=gpar(col="grey") )
pushViewport( viewport(layout.pos.col=2:3, layout.pos.ro...
grid.rect()
popViewport(2)
#ref(grid パッケージ事始/grid-07.gif, center)
* COLOR(green){grobの作成} [#x7ff0b66]
R の graphics パッケージ中の関数ならば,作図の命令を行え...
一方,グリッド・グラフィックスには grob(Grid Graphics Ob...
という概念がある.これは作図に関する情報をオブジェクトと...
このオブジェクトを直ちに作図デバイスに出力することも出来...
いろいろと加工した後に作図デバイスに出力することも出来る...
の柔軟性を支える屋台骨となっている.grob を作成する関数は...
| arrowsGrob(x = c(0.25, 0.75), y = 0.5) |...
| circleGrob(x=0.5, y=0.5, r=0.5) |...
| frameGrob(name=NULL, gp=gpar(), vp=NULL) |...
| linesGrob(x = c(0.25, 0.75), y = 0.5) |...
| lineToGrob(x=1, y=1) |...
| pointsGrob(x, y) |...
| polygonGrob(x=c(0, 0.5, 1, 0.5), y=c(0.5, 1, 0.5, 0)) |...
| rectGrob(x = 0.5, y = 0.5, width = 0.7, height = 0.3) |...
| segmentsGrob(x0 = 0, y0 = 0, x1 = 0.5, y1 = 0.5) |...
| textGrob(label, x = 0.5, y = 0.5) |...
| xaxisGrob(at = NULL, label = T, main = T, name = NULL)|...
| yaxisGrob(at = NULL, label = T, main = T, name = NULL)|...
grob を編集する基本関数は grid.edit() である.また,関数 ...
grob を出力することが出来,関数 gTree() でいくつかの grob...
それらを単一のオブジェクトとして扱うことが出来る.~
関数 grid.edit() の簡単な使用例を挙げる.
grid.newpage()
grid.xaxis(name="xa", vp=viewport(w=.5, h=.5)) # x 軸
grid.edit("xa", gp=gpar(col="red")) # 赤に変更
#ref(grid パッケージ事始/grid-08.gif, center)
「線を引く」という grob を生成し,次にこの grob を作図デ...
grid.newpage()
line <- linesGrob()
grid.draw(line)
#ref(grid パッケージ事始/grid-09.gif, center)
grob である "line" を関数 editGrob() で編集し,色を緑に変...
line <- editGrob(line, gp=gpar(col="green"))
grid.draw(line)
#ref(grid パッケージ事始/grid-10.gif, center)
grob には grob の名前でアクセスすることも出来る.名前でア...
関数 gPath() を用いる方法と,名前をそのまま指定する方法と...
grid.newpage()
grid.lines(name="gl")
grid.edit(gPath("gl"), gp=gpar(col="red")) # gl を赤に...
grid.edit("gl", gp=gpar(col="blue")) # gl を青に...
#ref(grid パッケージ事始/grid-11.gif, center)
関数 grid.frame() を使う場合,まず grid.frame() で枠のオ...
を作成してから,次に関数 grid.pack() でオブジェクトを出力...
gp で装飾を施す( gpar を変更する)ことが出来る.
grid.newpage()
grid.frame(name="gf", draw=TRUE)
grid.pack("gf", rectGrob(gp=gpar(fill="grey")))
grid.pack("gf", textGrob("hi there"), side="right")
#ref(grid パッケージ事始/grid-12.gif, center)
* COLOR(green){オブジェクトのセーブ・ロード} [#jde300ec]
作図をファイルに保存する場合は関数 save() を用いる.保存...
grid.newpage()
grid.grill() # 網目を描く
tmp <- recordPlot() # 現在の作図を tmp に代入
save(tmp, file="tmp-041123") # ファイル tmp-041123 に保存
ファイルに保存した作図をロードする場合は関数 load() を用...
load("tmp-041123")
tmp # 保存した tmp を呼び出す
この操作は grob に対しても実行できる.
temp <- textGrob("Hello world.")
save(temp, file="temp-041123")
load("temp-041123")
grid.draw(temp) # 保存した temp を呼び出す
* COLOR(blue){グリッド・グラフィックスを使った作図例} [#l...
(いろいろ投稿していただけますと幸いです)
お言葉に甘えて,使い方の例だけ
t <- seq(0, 360, by=5)
radian <- function(degree) {
degree/180*pi
}
l <- 0.18
ox <- l*cos(radian(t))
oy <- l*sin(radian(t))
grid.newpage()
viewport(x=0.250,y=0.250,w=0.500,h=0.500)
grid.rect()
for (i in 1:length(t)) {
grid.circle(ox[i]+0.65, oy[i]+0.5,
sqrt((ox[i]-ox[1])^2+(oy[i]-oy[1])^2))
}
#ref(grid パッケージ事始/cardioid.png)
数式も書けます
grid.newpage()
grid.text(expression(z[i] == sqrt(x[i]^2 + y[i]^2)),
gp=gpar(cex=2))
#ref(grid パッケージ事始/math.gif)
正方形を描いてみました.
grid.newpage()
pushViewport(viewport(w=.5, h=.5, name="A"))
grid.rect()
pushViewport(viewport(w=.5, h=.5, name="B"))
grid.rect(gp=gpar(col="grey"))
upViewport(2)
grid.rect(vp="A", gp=gpar(fill="red"))
grid.rect(vp=vpPath("A", "B"), gp=gpar(fill="blue"))
grid.newpage()
grid.polygon(x=c((0:4)/10, rep(.5, 5), (10:6)/10, rep(.5...
y=c(rep(.5, 5), (10:6/10), rep(.5, 5), (0:4...
id=rep(1:5, 4), gp=gpar(fill=1:5))
#ref(grid パッケージ事始/square.gif)
* COLOR(purple){ご意見など} [#ted200f8]
いろいろご意見をいただけますと幸いです.間違い修正・改善...
->お言葉に甘えて,使い方の例だけ~
早速,使い方の例を示していただきましてありがとうございま...
-関数 radian() の定義が抜けていたようなので,勝手ながら関...
#comment
ページ名: