ハマっている「お菓子」を教えて!

実験データの比較のために、複数の長さのデータのグラフをひとつのグラフへ表示させようとしています。
この際、データが存在する部分だけにそれぞれのデータの理想値のグラフを関数で表示させたいのですが、それぞれの関数に対してそれぞれの範囲を指定する方法がわかりません。

例えば、
v(x)=4*x
u(x)=2*x
とした場合に、vは[0:3]の範囲で、uは[0:6]の範囲で表示させたい場合、どのようにして表示させればいいのでしょうか?

よろしくお願いします。

A 回答 (2件)

・NaN


調べたら、4.2以降で定義された定数だそうです。
それ以前なら 「1/0」としてください。

・"-"
特殊なファイル名で、入力ファイルを指定するところで使うと、それ以降のeだけの行までを入力ファイルの内容として取りこみます。
方法2は
-text1ここから---
0
3

-text1ここまで---
-text2ここから---
0
6

-text2ここまで---
という二つのファイルを用意して
plot "text1" using 1:(v($1)) w l,"text2" using 1:(u($1)) w l;
とするのと同じことです。

参考URL:http://takeno.iee.niit.ac.jp/%7Efoo/gp-jman/data …
    • good
    • 0
この回答へのお礼

あれ、自分のgnuplotは、


G N U P L O T
Version 4.2 patchlevel 6
last modified Sep 2009
System: MS-Windows 32 bit
と表示されているのですが、NaN使えないです。。。

なるほど、"-"っていう、特殊なファイル名があったんですねー

とりあえず、NaNの部分を1/0に書き換えたらうまくいきました。
どうも有り難うございました。

お礼日時:2010/03/06 02:49

自信はありませんが、ちょっと考えてみました。



方法1)
v(x) = ((0<= x)&&(x<=3))? 4*x : NaN ;
u(x) = ((0<=x)&&(x<=6))? 2*x : NaN ;
set xrange [0:6] #ここは適当に
plot [0:6] v(x) , u(x);

やってみたら、端がちょっと欠ける

方法2)
v(x) = 4*x ;
u(x) = 2*x ;
plot "-" using 1:(v($1)) w l,"-" using 1:(u($1)) w l;
0 #v(x) のxの最小値
3 #v(x) のxの最大値
e
0 #u(x) のxの最小値
6 #u(x) のxの最大値
e

v,uが直線なら、こんな方法も。
範囲の部分を別ファイルに用意しても可。
曲線なら、xの値を複数用意して smoothで滑かに。

方法3)
set arrow 1 from 0,v(0) to 3,v(3) nohead
set arrow 2 from 0,u(0) to 6,u(6) nohead

これは線分のみ。凡例が出ないのでlabelと併用。
    • good
    • 0
この回答へのお礼

解答有り難うございます。
ここ数週間物凄く忙しかったため、返信が非常に遅くなり申し訳ありません。

いくつか疑問なのですが、方法1のNaNは、私の方では
undefined variable: NaN
と出てくるのですが、これは、自分で何か定義しないといけないのでしょうか?

方法2についてなのですが、ここでplotしている"-"はどういう扱いとなっているのでしょうか?
存在しないファイル名を無理矢理指定している形でしょうか?それとも、ハイフンはgnuplot的に何か特殊な意味を持たせているのでしょうか?

お礼日時:2010/03/05 04:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!