どうして、横幅が足りないと軸ラベルが飛ぶのか?
Rはグラフィックスペースが狭いと、軸のラベルが間引きされてしまう。
当時、何故かこのことが嫌だった。
けっこう重宝していたのですが、今思うと、何でこんなの作ったんだろう?
- gridBaseパッケージで軸をきれいに
> gridtext <- function(label, cex=12, at=seq(label), side=1, rot=-60, just="right", line=1,col=1,tcl=-0.1, ...){ + library("gridBase") + if(missing(label)) stop("missing label") + if(missing(just)){ + if(side==1|side==4) just <- "left" + if(side==2|side==3) just <- "right" + } + if(missing(line)) line <- 1 + axis(side=side,at=at,labels=FALSE,lwd=0.3,tcl=tcl) + vps <- baseViewports() + par(new=TRUE) + pushViewport(vps$inner, vps$figure, vps$plot) + if(side==1) grid.text(label=label, x=unit(at, "native"), + y=unit(line*(-1), "lines"), just=just, rot=rot, gp=gpar(fontsize=cex,col=col,...)) + if(side==2) grid.text(label=label, y=unit(at, "native"), + x=unit(line*(-1), "lines"), just=just, rot=rot, gp=gpar(fontsize=cex,col=col,...)) + if(side==3) grid.text(label=label, x=unit(at, "native"), + y=unit(line+.03, "npc"), just=just, rot=rot, gp=gpar(fontsize=cex,col=col,...)) + if(side==4) grid.text(label=label, y=unit(at, "native"), + x=unit(line+.03, "npc"), just=just, rot=rot, gp=gpar(fontsize=cex,col=col,...)) + popViewport(3) + par(new=FALSE) + detach("package:gridBase") + }
で、普通のグラフと比べると、ちょっとだけ見栄えが良くなります。
> dat <- data.frame(matrix(rnorm(48),ncol=8,dimnames=list(paste("rowname",1:6),paste("colname",1:8)))) > jpeg("gridtext.jpg",width=720) > layout(t(1:2)) > boxplot(dat,pch=16) > boxplot(dat,pch=16,xaxt="n") > gridtext(label=colnames(dat)) > dev.off()
> jpeg("gridtext2.jpg",width=720) > layout(t(1:2)) > boxplot(t(dat),pch=16,horizontal=TRUE) > boxplot(t(dat),pch=16,yaxt="n",horizontal=TRUE) > gridtext(label=rownames(dat),side=2,rot=0,just="right",line=.5) > dev.off()
gridBaseパッケージは多機能で使いこなすと美しいグラフがかけると思います。
でも、僕はこれで精一杯でした…
gridBaseはここに良くまとまっています。