library(grid)でお絵かき

なかなか、納得のいかないまま、スライド作り。
さっさ作ってしまえば良いのに、こーゆー時に限ってはまってしまうものです。
ってことで、library(grid)のお勉強。
R2winbugsが返すbugsオブジェクトを使って作図します。library(grid)ってば、自由度はめちゃ高いですがなかなかに使い勝手が悪い。作図関数でも座標系の単位がデフォルトの状態で、npcだったりnativeだったりが混在していて、はまってしまいました。ま、最初から指定しとけばいいんだけど。
いちお、関数にしてみました。ターゲットがかなり薄いですが、ご自由にもってってください。
関数名:col.dens
・内容
R2winbugsが返すbugsオブジェクトを使って、任意のパラメータのカーネル密度を描いて、95%信頼区間を塗りつぶします。
・使い方
col.dens(dat,header,max)です。datはbugsオブジェクト名、headerはbugsオブジェクト中のパラメータ名、maxはy軸の最大値です。
使用例
col.dens(hogehoge,”Beta1″,5)とかすると
多分、こーゆー画が描けます。
スクリプトは下のとおり。
使いもんにならんぞ、ゴルァ!! なお叱りはコメントにてお願いします。
[sourcecode language=’cpp’]
col.dens <- function(dat,header,max){
i <- which(colnames(dat$sims.matrix)==header)
density.dat <- density(dat$sims.matrix[,i])
border.rnum <- which(rownames(dat$summary)==header)
min.border.cnum <- which(colnames(dat$summary)=="2.5%")
max.border.cnum <- which(colnames(dat$summary)=="97.5%")
line.x <- density.dat$x
line.y <- density.dat$y
grid.newpage()
view1 <- viewport(x=0.5,y=0.5,w=0.8,h=0.8,xscale=c(-1.5,1.5), yscale=c(0,max))
pushViewport(view1)
grid.polygon(x=c(dat$summary[border.rnum,min.border.cnum],dat$summary[border.rnum,min.border.cnum], dat$summary[border.rnum,max.border.cnum], dat$summary[border.rnum,max.border.cnum]), y=c(0, max, max, 0),default.units="native",gp=gpar(fill="#D3CAAA",col="#D3CAAA"))
grid.rect()
grid.xaxis() # x 軸を描く
grid.yaxis()
grid.lines(x = line.x, y=line.y,"native")
grid.lines(x = c(0,0), y=c(0,max),"native")
}
[/sourcecode]
-
前の記事
MCMCの樹海で遭難中 2009.03.20
-
次の記事
もう一回やり直し 2009.03.21