2014年12月30日
(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) |
出力の結果は以下のようになります。
③(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次元で表示