メインへ戻る

2014年12月30日

panda01.gif (Scilab)CSVから3次元表面プロットをする

Scilabを利用して、CSVファイルを読み込んで3次元の表面プロットをする方法を書いておきます。

①エクセルのデータ系列でいうとA列にX軸データ、B列にY軸データ、C列にZ軸データを格納したCSVファイル形式の場合

Scilabでファイルを読み込ませた後は、以下の形で実行させます。(この場合、CSVファイルは私のデスクトップに置いてあると仮定しております。)

M=csvRead('C:\\Users\\cazper\\Desktop\\test.csv')
XX=M(:,1)
YY=M(:,2)
ZZ=M(:,3)
X=matrix(XX, 3,3)
Y=matrix(YY, 3,3)
Z=matrix(ZZ, 3,3)
surf(X,Y,Z)
出力の結果は以下のようになります。

②エクセルにZ軸データのみを格納したCSVファイル形式の場合。

Scilabでファイルを読み込ませた後は、以下の形で実行させます。(この場合、CSVファイルは私のデスクトップに置いてあると仮定しております。)

M=csvRead('C:\\Users\\cazper\\Desktop\\test2.csv')
surf(M)
出力の結果は以下のようになります。

このCSV形式の場合、別のコマンドでも3次元表示が出来ます。

M=csvRead('C:\\Users\\cazper\\Desktop\\test2.csv')
x=1:3
y=1:3
plot3d1(x,y,M)
x=1:3というのは、X軸の範囲設定です。

出力の結果は以下のようになります。

③(Gnuplot編) ①のデータをGnuplotで3次元プロットした場合
利用するデータは①と同じです。

それをGnuplotで読み込ませるでScilabのように3次元の曲面を表示させます。

set datafile separator ","
splot 'C:\\Users\\cazper\\Desktop\\test.csv' using 1:2:3 with line
set dgrid3d 3,3
set pm3d
replot
出力の結果は以下のようになります。

<追伸>
ちなみに、Scilabで大量のデータを読み込ませて、「スタックサイズを超えました」と表示が出たら、とりあえずstacksize('max')を打ち込んで回避して下さい。(非力なパソコンだとスワップしまくってパソコンが激遅になりますが。)

<参考サイト>
Surfの説明
csvReadの説明
Scilabを使ってCSVファイルをグラフ化
plot3d1の説明
stacksize('max')の説明
csvread()でCSVファイルのデータをロード
Gnuplot - splot matrix csv data
HobNote
3次元プロットのあれこれ (その2)
GNUPLOTを用いたグラフ作成
gnuplotでcsv読み込んで3次元で表示

投稿者 cazper : 12:54 | コメント (0) | トラックバック | b_entry.gif