Rで累積分布を書く。バッチ処理バージョン

CSVファイルの一列目に書かれた、
値の累積分布を計算し、グラフをeps
で出力するスクリプト


無理やりRだが、これはおそらくgnuplotだともっと簡単かもしれない。

使い方
R --vanilla --slave --args input.csv X-axisName < CDF.R

出力はtmp.epsがデフォルト

一つめの引数でCSVファイル
二つめの引数でx軸のラベルで設定。



CDF.R

wakuloglog110<-function(){


        alpha123<-par("plt")
        alpha123b<-alpha123
        alpha123b[1]<-0.2
        par(plt=alpha123b)
        alpha123

}

wakuloglog210<-function(minx,maxx,miny,maxy){

        minminx<-as.integer(log(minx,10))-1
        maxmaxx<-as.integer(log(maxx,10))+1
        minminy<-as.integer(log(miny,10))-1
        maxmaxy<-as.integer(log(maxy,10))+1
        #minmin<-0
        #maxmax<-6
        axis(1,at=10^(minminx:maxmaxx),tck=0.03,label=F);
        axis(1,at=10^(minminx:maxmaxx)%x%1:9,tck=0.01,label=F);
        axis(3,at=10^(minminx:maxmaxx),tck=0.03,label=F);
        axis(3,at=10^(minminx:maxmaxx)%x%1:9,tck=0.01,label=F);
        axis(2,at=10^(minminy:maxmaxy),tck=0.03,label=F);
        axis(2,at=10^(minminy:maxmaxy)%x%1:9,tck=0.01,label=F);
        axis(4,at=10^(minminy:maxmaxy),tck=0.03,label=F);
        axis(4,at=10^(minminy:maxmaxy)%x%1:9,tck=0.01,label=F);





}


wakuloglog310<-function(axis=1,axTicks=axTicks(1)){

        lab=log(axTicks,10)

        str1=paste(sep="","axis(",axis,",at=axTicks,las=",axis,",label=c(")
        str2=paste(sep="",collapse=",","expression(10^",log(axTicks,10),")");
        str3="),cex.axis=2,tck=0.03)"

        str=paste(sep="",str1,str2,str3)
   
        eval(parse(text=str))


}



wakuloglog410<-function(plt=par("plt")){

        par(plt=plt)
}

midpointloglog<-function(x,y,sep=20){
        d<-as.integer(exp(seq(log(length(y)),log(1),length.out=sep)))

        points(rev(x)[d],rev(y)[d],pch=17,cex=1.5)

}



cdfloglog<-function(data,filename="tmp.eps",xlab="",ylab="CDF"){

        a<-data

        postscript(file=filename)

        a1<-wakuloglog110()

        plot(sort(a),length(a):1/length(a),log="xy",type="l",xlab="",ylab="",t
=0.01,cex.axis=2,cex.lab=1.5,xaxt="n",yaxt="n")

        wakuloglog210(min(a),max(a),1/length(a),1);
        wakuloglog310(1,axTicks(1));
        wakuloglog310(2,axTicks(2));
        mtext(2,line=5.0,text=ylab,cex=2,font=7)
        mtext(1,line=3.0,text=xlab,cex=2,font=7)
        midpointloglog(sort(a),length(a):1/length(a))
        wakuloglog410(a1);
        dev.copy(postscript)
        dev.off()

}

data=read.table(commandArgs()[5])

data<-data[,1]
cdfloglog(data,xlab=commandArgs()[6]);


参考
http://d.hatena.ne.jp/kermitonphd/searchdiary?word=%2a%5bother%5d