ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Rでお絵かき その1 グラフおえかき

2012-02-02 11:51:18 | そのほか
 統計のフリーソフトRを使って、グラフを作成させ、それをファイルに書き出すことを考える。

 こうすれば、あとは、

Java から R の機能を呼び出し (Rserve を使用)
http://www.db.is.kyushu-u.ac.jp/rinkou/r/rserve.html

を使えば、Javaのプログラムから、統計処理をしたグラフなんかをじゃんじゃん出せることになる。

 とくに、Javaで、TeXファイルを書き出し、それをPDFかなんかにすれば、統計処理した結果を、うるわしい帳票で出力できそうだ・・・

と、野望は大きいのだが、今日はその第一歩、グラフのお絵かきをする。




■今日の課題

 こんなグラフを書き出します。

つまり、sinカーブを0から180度(pi)まで書いて、
そこに10個、ランダムに点を打ちます。





■plotすると・・・

つまり、sinカーブを0から180度(pi)まで書いて、
(その間に1000個の点を配置して、plotのとき、type="l"にしてつなぐ)
単純にプロットしてみましょう。

delta<- 1000 
en.x<-seq(0,pi,length=delta) 
en.y<-sin(seq(0,pi,length=delta)) 
plot(en.x,en.y,type="l",xlim=c(0,pi),ylim=c(0,1))
polygon(c(en.x,rev(en.x)),c(rep(0,delta),rev(en.y)),col="green") 


この結果が、下の通り。

なんか、浮いちゃって、かっこ悪い。




■軸をひく

そこで、ビシッと軸につくように、

1.plotのときに軸を書かない
2.axisで軸を引く
   →横軸は、3で止まり、piまでひかれないので、線を引きなおしている
3.segmentsで線を引く

っていうことをしたのが、こんな感じ
delta<- 1000 
en.x<-seq(0,pi,length=delta) 
en.y<-sin(seq(0,pi,length=delta)) 
plot(en.x,en.y,type="l",xlim=c(0,pi),ylim=c(0,1))
polygon(c(en.x,rev(en.x)),c(rep(0,delta),rev(en.y)),col="green") 

axis(1,pos=0,at=seq(0,pi,by=0.6),adj=0,col=1)
segments(0,0,pi,0)
axis(2,pos=0,at=seq(0,1,by=0.2),adj=0,las=2,col=1)
segments(0,1,pi,1)
segments(pi,0,pi,1)
polygon(c(en.x,rev(en.x)),c(rep(0,delta),rev(en.y)),col="green")






■乱数を発生させて、図に載せる

一様乱数を発生させるのは、runif(n,0,pi)でいい。(nは個数。今回は0~piまで)
で、問題は、これを図に載せるために、
par(new=T)
をしている。これを書かないと、乱数だけ別のグラフになってしまう。

この乱数部分は、こんなかんじ。


n<-10
data <- cbind(runif(n,0,pi),runif(n))
par(new=T)
plot(data,xlim=c(0,pi),ylim=c(0,1),pch=20,axes=F,ann=F,col="blue")





今回はここまで。
この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« memcachedをnode.jsで | トップ | ビッグデータって、クラウド... »
最新の画像もっと見る

そのほか」カテゴリの最新記事