2010年
3月
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

セットアップ日記


2010年03月14日 Rとlatex

_ latexの式をepsに

グラフを書くときにはRを使っているが、Rで書いたグラフの欠点の一つに、数式などの表記が美しくないという点が挙げられる。expressionとpasteを使えば、いろいろな式を表現することができるが、見栄えがあまり良くない。psfragを使うとRで書いたグラフにlatexの文字を埋め込むことができるようなので、試してみた。まず、比較のためにRでグラフを書いてみる。
x<-seq(from=0, to=7, by=0.01)
y<-sin(x)
xl<-c(0,2*pi)
yl<-c(-1,1)
X11(width=100/25.4,height=80/25.4)
par(bg=rgb(0.99,0.99,0.99),fg="black")
par(tcl=0.5,xaxs="i",yaxs="i")
par(mar=c(3,4,1,1))
par(las=1,ps=11)
plot(x,y,type="l",xlim=xl,ylim=yl,ann=FALSE,axes=FALSE)
box()
axis(1,at=c(0,pi,2*pi),labels=c(0,expression(pi),expression(2*pi)),padj=-1)
axis(2,labels=TRUE)
axis(3,at=c(0,pi,2*pi),labels=FALSE)
axis(4,labels=FALSE)
mtext(expression(italic(x)),side=1,line=2)
mtext(expression(italic(y)),side=2,line=3)
text(4,0.5,expression(paste(italic(y),"=",sin," ",italic(x))))
dev.copy2eps(file="sin.eps")
最近は、こんな感じで書いたグラフをepsにして、latexに取り込んでいる。いよいよpsfragで処理するために、もとになるepsを作る。
x<-seq(from=0, to=7, by=0.01)
y<-sin(x)
xl<-c(0,2*pi)
yl<-c(-1,1)
X11(width=100/25.4,height=80/25.4)
par(bg=rgb(0.99,0.99,0.99),fg="black")
par(tcl=0.5,xaxs="i",yaxs="i")
par(mar=c(3,4,1,1))
par(las=1,ps=11)
plot(x,y,type="l",xlim=xl,ylim=yl,ann=FALSE,axes=FALSE)
box()
axis(1,at=c(0,pi,2*pi),labels=c("l1","l2","l3"),padj=-1)
axis(2,labels=TRUE)
axis(3,at=c(0,pi,2*pi),labels=FALSE)
axis(4,labels=FALSE)
mtext("x",side=1,line=2)
mtext("y",side=2,line=3)
text(4,0.5,"title")
dev.copy2eps(file="sintex.eps")
これはほとんど同じなのだが、文字は置き換えるために、単純な文字列にしている。そして、このepsをpsfragを使ってlatexで処理する。
\documentclass[11pt]{jarticle}
\usepackage[dvips]{graphicx}
\usepackage{psfrag}
\pagestyle{empty}
\begin{document}
\psfrag{title}{$y=\sin x$}
\psfrag{x}{$x$}
\psfrag{y}{$y$}
\psfrag{l1}{$0$}
\psfrag{l2}{$\pi$}
\psfrag{l3}{$2\pi$}
\includegraphics{sintex.eps} 
\end{document}
このファイルをplatex, dvips, ps2epsで処理すると、文字がlatexの文字で置換されたepsファイルができる。このdiaryには基本的には図は載せないことにしているので、見せることができないが、出来上がった二つの図を比較してみると、やはりlatexの文字は綺麗だと感じる。ただし、y軸の数字は置換していないので、Rのフォントになってしまっていて、少し違和感がある。picture環境で図と文字を配置しても同じようなことができる気もするが、psfragも有用な手法だと感じる。
[]