AcreMaker
RからTriSPを呼び出す関数 - plot.trisp

統計解析ソフトRのデータをTriSPに送り、3次元散布図を描画する関数を作成しました。


7月6日追記 : Version2.0以前はこちらを利用して下さい。


plot.trisp <- function(x,y,z,color=NULL,handling.window=FALSE) {

 if (length(x) != length(y)) {
  stop("xとyのデータ数が一致しません")
 }

 if (length(x) != length(z)) {
  stop("xとzのデータ数が一致しません")
 }

 sample.size <- length(x)

 if (is.null(color)) {
  color <- rep(1,sample.size)
 }
 else {
  if(length(x) != length(color)) {
   stop("xとcolorのデータ数が一致しません")
  }

  color.matrix <- matrix(rep(color,10),nrow=10,byrow=T)
  match.up.matrix <- matrix(rep(1:10,sample.size),ncol=sample.size)

  if (sum(color.matrix==match.up.matrix) != sample.size) {
   stop("カラーは1から10の整数で指定してください")
  }
 }
 return.data <- cbind(x,y,z,color)
 colnames(return.data) <- paste("Col",1:4, sep="-")

 write.csv(return.data,file="C:/hogehoge/analyzed_data.csv",row.names=FALSE)

 if (handling.window==TRUE) {
  shell(paste('"C:/hogehoge/trisp-2.1.exe"'), wait = FALSE)
 }
 else {
  shell(paste('"C:/hogehoge/trisp-2.1.exe"','1'), wait = FALSE)
 }

}


9月16日追記 : 改良版をつくりました。version2.1以降はこちらをご利用ください。


plot.trisp <- function(x,y,z,color=NULL,label=NULL,gradation=FALSE,template=NULL,handling.window=FALSE) {
 if (length(x) != length(y)) {
  stop("xとyのデータ数が一致しません")
 }

 if (length(x) != length(z)) {
  stop("xとzのデータ数が一致しません")
 }

 sample.size <- length(x)

 if (is.null(color)) {
  color <- rep(1,sample.size)
 }

 if(length(x) != length(color)) {
  stop("xとcolorのデータ数が一致しません")
 }

 return.data <- cbind(x,y,z,color)

 if (is.null(label) == TRUE) {
  colnames(return.data) <- paste("Col",1:4, sep="-")
 }
 else {
  if (length(label) == 3) {
   colnames(return.data) <- c(label,"Color")
  }
  if (length(label) == 4) {
   colnames(return.data) <- label
  }
 }

 active.number <- 1
 if (handling.window == FALSE) {
 active.number <- active.number + 2
 }
 if (gradation == TRUE) {   active.number <- active.number + 4
 }
 if (is.null(template) != TRUE) {
  if (template == 1) {
   active.number <- active.number + 8
  }
  if (template == 2) {
   active.number <- active.number + 16
  }
  if (template == 3) {
   active.number <- active.number + 32
  }
 }

 write.csv(return.data,file="C:/hogehoge/analyzed_data.csv",row.names=FALSE,quote=F)

 shell(paste('"C:/hogehoge/trisp-2.1.exe"',active.number), wait = FALSE)

}

◆使い方
上のプログラムをコピーしてメモ帳などのテキストファイルなどにコピーしてください。
その後、プログラムの赤い部分を自分のパソコンのTriSPが入ってる場所に変更してください。
変更が終わったら、プログラムをRに読み込ませれば準備完了です。


その際、注意としてはWindowsではC:\Program Filesといったように\が使われていますが、
Rでは代わりに/が使われていますので気をつけましょう。

例 : Trisp-2.1.exeがC:\Users\Acre\Documentsというフォルダ内にあるのなら。
赤い部分はC:/Users/Acre/documents/となります。

◆パラメータ説明
x : x軸のデータ
y : y軸のデータ
z : z軸のデータ
color : 色指定のデータ、1から10の整数を入れてください。
    何も指定しない場合はすべて1となり全てのサンプルが赤色でプロットされます。
    1から10の整数以外を入れた場合は、起動時にグラデーションモードにするか
    きいてきます。
label : パラメータ名です。何も入れない場合はx軸から、col-1,col-2,col-3と名前がつきます。
gradation : TRUEの場合、グラデーションを行いプロットします。
template : あらかじめ作成しておいた設定のテンプレート(表示色やプロットの大きさ)を
       読み込むことができます。テンプレートは起動後も読み込むことができます。
handling.window : TRUEの場合、操作ウィンドウを表示します。デフォルトは非表示です。



以下に関数の仕組みを書いておきます。独自でプログラムを行う際の参考にお使いください。



@write.csv関数でtrispが入ってるフォルダにanalyzed_data.csvというファイルを作成する。
A次に、TriSPにあたえる引数を決定します。
 +1 : Rから起動する。
 +2 : 操作ウィンドウを表示しない。
 +4 : グラデーションを行う。
 +8 : テンプレート1を読み込む。
 +16 : テンプレート2を読み込む。
 +32 : テンプレート3を読み込む。
例 : Rから起動し、操作ウィンドウを表示し、グラデーションを行い、テンプレート2を読み込む場合、
1+4+16=21を引数とすればよい。
Bshell関数によりコマンドプロンプトを経由し、TriSPを起動する。
Cこの時、TriSPは引数1で起動した場合、自動的にanalyzed_data.csvファイルを読み込み表示します。
  さらにその際、操作ウィンドウを表示せず、3D viewerのみの表示となっていますので場所もとりません。

関数はまだまだ改良中で、不備なところがあります。
バグやこうした方がいいよという改善案がありましたら是非ご連絡ください。

公開日 : 7月2日
追記 :   9月16日