google chart apiのようなものをR言語を利用して再現してみる(R Advent Calendar2012)
R Advent Calendar2012、18日目です。
google chart apiは、パラメータを指定してリクエストを送るとpng画像としてグラフを作成してくれる。
例えば、
<img src="http://chart.apis.google.com/chart?chs=300x300&chd=t:10,20,30|40,50,60&cht=s">
のようにhtml内に記述すれば、
と表示してくれる。
これらは非常に便利なのだが、R言語を使う人ならば、
普段と同じような感覚で書けると幸せになれるのではないだろか?
と言う事で、作ってみました。
例えば、
<img src="http://api.gepuro.net/plot?x=10,20,30&y=40,50,60&grid=1&xlab=xziku&ylab=yziku&type=p" width=500 height=500>
というように書けば、
と表示してくれます。
現在、利用可能な引数として、
- xlab (未指定では"x")
- ylab (未指定では"y")
- main (未指定では" ")
- type (未指定では"p")
- gird (未指定では"0", grid()を使用する場合は"1"にする)
です。
軸名などは、URLエンコードしてあげれば日本語も表示できます。
自分としては、後者のようにR言語らしくかけると楽に感じるし、
描けるグラフの種類も増えるので便利に思う。
内部的な話をすると、リクエストを受ける部分はpythonで書いてあり、
返り値としてR言語上で作成した画像ファイルを返すようにしています。
とりあえず、Rのコードを載せておきます。
#!/usr/bin/Rscript config <- read.table("stdin", stringsAsFactors=FALSE, sep="\t") filename <- config$V1 xlab <- config$V2 ylab <- config$V3 main <- config$V4 usegrid <- config$V5 type <- config$V6 dat <- read.csv(paste("./data/", filename, sep=""), header=FALSE) png(file=paste("./graph/", filename, ".png", sep="")) plot(dat$V1, dat$V2, xlab=xlab, ylab=ylab, main=main, type=type) if( usegrid == 1 ){ grid() } dev.off()
しばらく、このまま運用してみて、需要に応じて機能追加や仕様変更を行おうかと考えています。