生物物理計算化学者の雛

主に科学に関する諸々を書き留めています。

Rで三次元のデータ位置を可視化する

Rには手軽に三次元描画を行うことができるライブラリ rgl が含まれています。
このライブラリを使うには、まずRコマンドライン上でライブラリインストールを行います。

install.packages("rgl")
# CRNのミラーサイトを聞かれたら近い場所(Japan(Tokyo)等)を選択

次に三次元の点データを読み込みます。
ここでは以下のようなCSVファイル(コンマ区切りテキスト)が C:/work/xyz.txt として保存されているとします。

1.2, 0.1, 0.5
3.2, 0.3, 0.2
2.9, -0.5, 1.0
3.8, 1.0, 0.3

この三次元の4点の描画は以下のように行えます。

xyz = scan("c:/work/xyz.txt", list(x=1, y=1, z=1), sep=",")  
                      # CSVファイルを読み込む
xyz                   # 読み込んだデータの表示
# $x
# [1] 1.2 3.2 2.9 3.8
#
# $y
# [1]  0.1  0.3 -0.5  1.0
#
# $z
# [1] 0.5 0.2 1.0 0.3
library(rgl)          # rglライブラリ呼び出し
rgl.clear()           # rgl初期化、可視化ウィンドウを表示
rgl.bg(color="gray")  # 背景色をグレーに変更
rgl.spheres(xyz$x, xyz$y, xyz$z, color="white", radius=0.05)  
                      # 各データの位置に半径0.05の白い球を描画
numList = 1:4         # {1, 2, 3, 4} のリストを作成
rgl.spheres(xyz$x, xyz$y, xyz$z, color=numList, radius=0.5, alpha=0.5, shiness=0.25)  
                      # 各データの位置に半径0.5の半透明(透明度0.5)の球をそれぞれ違う色で描画
rgl.linestrips(xyz$x, xyz$y, xyz$z, color="yellow", lwd=5.0)  
                      # 各点の間に黄色の線を描画(lwdは線の太さ指定)
rgl.texts(xyz$x, xyz$y, xyz$z+0.2, numList, color="white")    
                      # 各点のz座標に+0.2ずらした場所に1-4の番号を表示

以上のコマンド入力により下のような絵を描画でき、マウス操作で自由に回転・拡大させることが可能です。