2016-07-19 5 views
1

データファイルの列にある数式表現と値によって得られた離散点を持つ3Dプロットをプロットする必要があります。私の現在のgnuplotのファイルは、次のようになります。gnuplotパラメトリックデータファイルとデータファイルの3Dプロットを混合する

set encoding utf8 
set terminal postscript enhanced color 
set output "3D.eps 
set nokey 
set parametric 

set xlabel "X" 
set ylabel "Y" 
set zlabel "Z" 

set title "So cool 3D plot" 

fx = ($3) * (1 - ($4) * cos(u)) *(cos(($7)*pi/180)*cos(($6)*pi/180) - sin(($7)*pi/180)*sin(($6))*cos(($5)*pi/180)) 
fy = ($3) * (1 - ($4) * cos(u)) *(cos(($7)*pi/180)*sin(($6)*pi/180) + sin(($7)*pi/180)*cos(($6)*pi/180)*cos(($5)*pi/180)) 
fz = ($3) * (1 - ($4) * cos(u)) *(sin(($7)*pi/180) * sin(($5)*pi/180)) 

plot [u=0:2*pi] "file.txt" u fx:fy:fz t "yey" 

は、基本的な情報の流れは、このようなものです:

1)file.txtををロードし、異なるcoloumnsにある値を抽出

2 。)すでに読み込まれた値を使用してx座標を導出します。 x座標は「時間」変数「u」に依存する

3.すでに読み込まれた値を使用してy座標を導出する。また、y座標は「時間」変数「u」に依存する

4.すでに読み込まれた値を使用してz座標を導出する。また、z座標は「時間」変数「u」に依存する

5) "file.txt"の各行について、u = 0 ... 2piのx、y、z点

これは、パラメトリックとデータファイルのプロットの組み合わせのようなものです。しかし、私のプロットファイルは機能しないようです...誰かが私を助けることができますか?

歓声、

アンドレ

答えて

1

4つの問題:1/usingで、あなたはcloumn番号ではありません任意の式を括弧で囲む必要があります。 2 /関数を定義するときは、少なくとも1つのパラメータに明示的に依存する必要があります。 3/$の列への参照は、関数で使用することはできません。引数として渡すか、columnルーチンを使用してください。

fx(u) = (column(3)) * (1 - (column(4)) * cos(u)) *(cos((column(7))*pi/180)*cos((column(6))*pi/180) - sin((column(7))*pi/180)*sin((column(6)))*cos((column(5))*pi/180)) 
fy(u) = (column(3)) * (1 - (column(4)) * cos(u)) *(cos((column(7))*pi/180)*sin((column(6))*pi/180) + sin((column(7))*pi/180)*cos((column(6))*pi/180)*cos((column(5))*pi/180)) 
fz(u) = (column(3)) * (1 - (column(4)) * cos(u)) *(sin((column(7))*pi/180) * sin((column(5))*pi/180)) 

plot [u=0:20] "file.txt" u (fx(pi*u/10.)):(fy(pi*u/10.)):(fz(pi*u/10.)) t "yey" 

しかし、あなたがforとして、Uの異なる値の間の線と点を結ぶことはできないでしょう:4/forループは、すべてこれを修正するために、整数の変数

一つのオプションがある必要がありますループは、データファイルのループポイントの「外部」です。

+0

ありがとう、それはトリックでした! – AndreH

関連する問題