« gnuplot(4) | メイン | 3ヶ月の夢 »
2005年05月27日
gnuplot(5)
データファイルを使った3次元プロットについて。
# sin_cos_data.plt set xrange [-3:3]; set yrange [-3:3]; set zrange [-2:2] set xlabel "x"; set ylabel "y"; set zlabel "z" set parametric set hidden3d splot "sin_cos.dat" with lines
# sin_cos.dat # x y z -3.000000 -3.000000 0.139708 -3.000000 -2.900000 0.137022 -3.000000 -2.800000 0.132966 -3.000000 -2.700000 0.127583 -3.000000 -2.600000 0.120924 -3.000000 -2.500000 0.113057 -3.000000 -2.400000 0.104061 -3.000000 -2.300000 0.094025 -3.000000 -2.200000 0.083049 : (省略)
sin_cos_data.c
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #define M_RANGE 3 int main(int argc, char *argv[]) { FILE *fp; double x, y, z; fp = fopen( "sin_cos.dat", "w" ); for( x = -M_RANGE; x <= M_RANGE; x += 0.1 ) { for( y = -M_RANGE; y <= M_RANGE; y += 0.1) { z = sin( x ) * cos( y ); fprintf( fp, "%lf %lf %lf\n", x, y, z ); } fprintf( fp, "\n" ); } fclose(fp); return EXIT_SUCCESS; }
今回は新しいコマンドとして set parametric と set hidden3d があります。
parametric モードは1行に x, y, z の3つの値を持つデータをプロットするモードです。また、ここでは示していませんが noparametric モードは z 値のみを持つ3次元データをプロットするときに使います。
hidden3d は陰線除去を行ってくれるコマンドです。ただ、この設定を行うとグラフの回転表示が非常に遅くなります。どうやら gnuplot はすべてソフトウェアで書かれているようですね。動作環境に応じて OpenGL や Direct3D (非Windows環境では無いので流石にこれは無理だと思いますが)で表示してもらえるといいのですが…。検索してみるとあったりして。
投稿者 napier : 2005年05月27日 00:59
トラックバック
このエントリーのトラックバックURL:
http://will.squares.net/mt/mt-modified-tb.cgi/185