gnuplot を使おう。 その2
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2006/11/28(火) 22:10:25gnuplot 公式 Web ページ
http://www.gnuplot.info/
前スレ
gnuplot を使おう。
http://pc8.2ch.net/test/read.cgi/unix/1002453983/l50
0242名無しさん@お腹いっぱい。
2007/11/04(日) 14:44:23ありがとうございました。
0243名無しさん@お腹いっぱい。
2007/11/04(日) 17:42:03グラフの名前は一つにしたい。
左の様にしたいが、右になる。
データファイルは
# x y
1 2
2 3
3 4
4 5
5 6
#
1 -7
2 -9
3 -3
4 -2
5 1
です。解決策希望します。
0244名無しさん@お腹いっぱい。
2007/11/04(日) 17:55:33空行でも入れれば
0245名無しさん@お腹いっぱい。
2007/11/04(日) 18:24:56できた。早い回答ありがとう。
0246名無しさん@お腹いっぱい。
2007/11/05(月) 04:12:490247名無しさん@お腹いっぱい。
2007/11/05(月) 05:10:14軸を入れ替えるにはどうしたらよいのでしょうか?
ご存知の方ご教示ください
0248名無しさん@お腹いっぱい。
2007/11/07(水) 05:20:45ってやるとグラフの左に
空白できるんだが、なんぞこれ?
0249248
2007/11/07(水) 05:34:580250名無しさん@お腹いっぱい。
2007/11/08(木) 19:14:22出力したepsファイルを描画ツールで加工する以外の方法でお願いします。
0251250
2007/11/08(木) 19:26:000252名無しさん@お腹いっぱい。
2007/11/09(金) 18:42:48上のタイトル名を改行して2行に渡り書く方法があれば教えてください
0253名無しさん@お腹いっぱい。
2007/11/11(日) 19:05:21set terminal epslatex
0254名無しさん@お腹いっぱい。
2007/11/12(月) 01:42:20なんとかなりませんでしょうか?
0256名無しさん@お腹いっぱい。
2007/11/15(木) 13:07:330257255
2007/11/15(木) 13:10:590258名無しさん@お腹いっぱい。
2007/11/15(木) 13:15:32ぐぐればすぐ出てくるよ。
0259名無しさん@お腹いっぱい。
2007/11/17(土) 14:44:37タイトルや凡例に日本語を使うにはfontnameには何を入れればいいですか?
手当たり次第にttfファイルを、".ttf"の有無し、フルパスで指定したりとか
試してるけどうまくいきません。
VineLinux4.1使ってます。
標準のgnuplot4.0.0と、自分でmake installした4.2.2で試してます。
表示にはdisplayコマンドとgvコマンドを使ってます。
0260名無しさん@お腹いっぱい。
2007/11/18(日) 00:43:09Fonts listed by `fontfile` or `fontfile add` encapsulate the font
definitions of the listed font from a postscript Type 1 or TrueType font
file directly into the gnuplot output postscript file. Thus, the enclosed
font can be used in labels, titles, etc. See the section
`postscript fontfile` for more details. With `fontfile delete`, a fontfile
is deleted from the list of embedded files. `nofontfiles` cleans the list
of embedded fonts.
0261259
2007/11/18(日) 04:38:38やはりその方法しかないみたいですね。
ちなみにその方法を試そうとすると以下のエラーが出ます。
私のところではttf2pt1をmake installする必要があるようです。
Command 'ttf2pt1 -a -e -W 0 /usr/X11R6/lib/X11/fonts/TrueType/sazanami-gothic.ttf -'
generated error, exitcode is 32512
ありがとうございます。
0262名無しさん@お腹いっぱい。
2007/11/19(月) 23:14:590.1 0.1 1
0.1 0.2 0
0.1 0.3 2
・
・
1.0 1.0 1
というデータファイルがあります。左2列はx,y座標でその場所に点をプロットします。プロットする点の色を3列目の数字によって変えます。
たとえば1なら黒 2なら青とか
こういうのってできますか?
0263名無しさん@お腹いっぱい。
2007/11/20(火) 09:35:403列目の数字に応じてファイルを分割したほうが早い気がする。
0264名無しさん@お腹いっぱい。
2007/11/20(火) 17:32:02とpltに書いてgnuplotで読むとエラーというか数値がガーって出て
しまうんですが対処法を教えてください。
0265名無しさん@お腹いっぱい。
2007/11/20(火) 17:53:27plot '1.txt' title 'data1' with points,'2.txt' title 'data2' with points
みたいにしたんですが、プロットの点が○と+になってしまいます。
プロットは全部、点で色だけを変えたいんですが、できますか?
0266名無しさん@お腹いっぱい。
2007/11/20(火) 21:40:00plot "<awk '{if ($3 == 1) print $0}'" pt 1,\
"<awk '{if ($3 == 2) print $0}'" pt 2,\
...
>265
"色" という概念はながらく鬼門だったのだが
今は色ってのがあるみたい。help colors してみるよろし
> For many terminal types it is also possible to assign user-defined colors
> using explicit rgb (red, green, blue) values, named colors, or color values
> that refer to the current PM3D palette.
0267名無しさん@お腹いっぱい。
2007/11/20(火) 22:34:56お聞きしたい事は
プロットしたドットを単純に色を変更するということではなく、x軸の目盛が1づつふられていたとして(0〜10000)プロットした際に、
0〜1000までの範囲にプロットされたドットは赤
1000〜2000までの範囲を青
という風に、x軸の範囲で色を変えるようにプロットしたいのですが、
どのようにすれば良いのでしょうか?色々と調べても答えが見つかりませんでした。
どなたかご教授頂けないでしょうか?
宜しくお願い致します。
0268名無しさん@お腹いっぱい。
2007/11/20(火) 22:51:26>266 と同じ考え方というか応用
plot "< awk '{if ($1 < 1000) print $0}' hoge.dat" pt 1,\
"< awk '{if (1000 <= $1 < 2000) print $0}' hoge.dat" pt 2,\
...
0269267
2007/11/20(火) 23:01:25can't read data file "< awk '{if ($1 < 1000) print $0}' hoge.dat"
といわれます
0270名無しさん@お腹いっぱい。
2007/11/21(水) 08:40:380271名無しさん@お腹いっぱい。
2007/11/23(金) 21:34:140272不安になってきた
2007/11/24(土) 09:09:570273名無しさん@お腹いっぱい。
2007/11/27(火) 23:09:42f(t)=-sqrt(t**2-t)+t\
g(t)=sqrt(t**2-t)+t
plot real(f(t)),imag(f(t)),real(g(t)),imag(g(t))
二次関数の共役複素解ですが、gnuplotで読み込むとおいおいって感じに
なるんやけど、どっか間違ってますか??
0274名無しさん@お腹いっぱい。
2007/11/28(水) 10:43:530275名無しさん@お腹いっぱい。
2007/11/28(水) 13:19:330276名無しさん@お腹いっぱい。
2007/11/28(水) 13:46:170278名無しさん@お腹いっぱい。
2007/11/29(木) 01:26:310279名無しさん@お腹いっぱい。
2007/11/29(木) 02:08:070280名無しさん@お腹いっぱい。
2007/11/29(木) 18:52:390281名無しさん@お腹いっぱい。
2007/11/29(木) 21:30:33亀レスですが
plot '-' using 2:3:xtic(1)
A 1 3
B 3 8
C 5 7
D 6 5
\E 7 9
F 9 4
e
でどうでしょうか?
0282名無しさん@お腹いっぱい。
2007/12/05(水) 18:09:06複数起動させずに最初に起動したgnuplotに値を渡すように設定できますか?
現状ではプログラムの処理速度がはやく、
次々に起動し、グラフが完全に出力されないことがあり困っています。
0283名無しさん@お腹いっぱい。
2007/12/05(水) 19:14:020284282
2007/12/05(水) 19:28:08data0.jpeg,data1.jpeg・・・のように自動的に描画・保存してほしい
このときプロット数が多いので、処理が終わってから次のデータへというふうにやりたい
わかってもらえます?
0285名無しさん@お腹いっぱい。
2007/12/06(木) 00:31:200286名無しさん@お腹いっぱい。
2007/12/06(木) 04:05:44プログラムから、ってのを具体的にplz。
例えばスクリプトやらバッチファイルやらで、
gnuplot data.gpl
(.gplの中身は手で打つコマンドを列挙したもの)
とかを繰り返すものであれば、そんな事態はあまり起こらない気がするし。
データが出そろうまでgnuplotを呼ばないようにすることのほうが問題では?
エスパー外してたらごめんちゃい。
0287名無しさん@お腹いっぱい。
2007/12/06(木) 08:34:57結果出力をファイルに書くのと同時(終了を待たず)に
データファイル読み込みなぐにゅうぷろっと起動、尻切れショボーン
>286 の通りにやるか素直に pipe で呼び出せばいーのに...
で、元質問者はマジで日本語の勉強すべし
0288282
2007/12/06(木) 12:44:13fout << "set output 'data" << t(プログラム中の変数) << ".jpeg'\n" << "sp 'data' w l\n" << "quit" ;
と書き込み、これをsystem("pgnuplot.exe plot.txt"); でpgnuplotへ送っています。
メインプログラムは、
1.値の計算 → 2.dataに結果の出力 → 3.gnuplotに値を渡し、グラフとして保存、終了 → 1へ戻る
というループをしています。
ここで、1と2でかかる時間が3でかかる時間より短いことにより、3が実行されるたびに別のgnuplotが起動し資源を食います。
そこで、解決法として、起動中のgnuplotに値を渡すことを考えました。
>>286
さんのように、data.gplを作る場合、手で打つのがめんどくさい、プログラム中の変数(set hidden3d x,y 等)を使うので変更するのが大変等の理由で断念しました。
(でも、それをプログラムでできるようにすればいいのかな?)
その後、プログラムからdata.jpegの有無を確認、あれば次のループを実行、無ければしばらく待機みたいなプログラムを考えています。
(ただgnuplotが、空のjpegを出力してからそこに上書きだと不可能)
>>287
自分でも、己の日本語力の無さに危機感を覚えているんですが、おすすめの書があったら教えてください。
0289282
2007/12/06(木) 12:50:40hidden3d ではなく dgrid3d でした。
あと、やはりjpegを作ってから書き込みたったので、考えていたプログラムは使えそうにないです。
0290名無しさん@お腹いっぱい。
2007/12/06(木) 13:07:41gnuplot の話じゃないじゃん?
0291名無しさん@お腹いっぱい。
2007/12/06(木) 14:58:143.の処理を待たずに1.に戻ってるのが問題と思われ。
待つ方法を考えてみては。呼び出し方とか。
0292名無しさん@お腹いっぱい。
2007/12/06(木) 16:20:10違う 2. を待たずに 3. を呼んでるのが
アホ&&ヴァカたる所以
(pipe で呼び出すなら終了を gnuplot 側が待ってくれるけど)
0293282
2007/12/06(木) 16:38:07ここで別の問題が発生し、load 'data.gpl' を実行すると、 set dgrid3d の行でエラーが発生しgnuが強制終了します。
dgrid3dを省略すると問題なく動き、手で入力しても動くのですが、なぜでしょうか?
以下 data.gplの中身です。
set terminal jpeg
set hidden3d
set dgrid3d 60,60
set pm3d
set pm3d map
unset colorbox
set palette defined ( -3 'blue' , 0 'white', 3 'red')
set output '0.jpeg'
sp [0:60][0:60][-0.0005:0.0005] 'data0' w l
set output '1.jpeg'
sp [0:60][0:60][-0.0005:0.0005] 'data1' w l
0294名無しさん@お腹いっぱい。
2007/12/06(木) 22:53:51とりあえずエラーメッセージのコピペきぼんぬ
0295名無しさん@お腹いっぱい。
2007/12/07(金) 15:18:15原因は[0:100]を[0:60]にしていたことでした。
ご迷惑おかけしました。
0296名無しさん@お腹いっぱい。
2007/12/11(火) 10:51:110297名無しさん@お腹いっぱい。
2007/12/12(水) 09:16:020298名無しさん@お腹いっぱい。
2007/12/12(水) 11:36:00お願いします。
0299名無しさん@お腹いっぱい。
2007/12/12(水) 13:27:49re で済ます
0301名無しさん@お腹いっぱい。
2007/12/13(木) 05:04:58対話型ならいざ知らず、ファイルに書き出すのも基本的にplot/replotが行われる
タイミングで実行されるわけだから、そんなん自動化したらえらいことになる、
と考えたらいいのではないかな。なんとなくだけど。
0302名無しさん@お腹いっぱい。
2007/12/13(木) 07:00:570303名無しさん@お腹いっぱい。
2007/12/13(木) 12:35:16reじゃなくてrepでは?
それともreでaliasを張るとか…?
というか、gnuplotってalias設定できましたっけ?
0304名無しさん@お腹いっぱい。
2007/12/13(木) 15:54:56描くにはどうすればいいのでしょうか?
下のようにすると、下の(1)のようになり文字が回転しません。
日本語フォントを使わなければ(2)のようになるのですが、
当然タイトルの日本語が化けます。
本当は、首を右にかしげたときに正常に見えるように文字を回転させたいのですが、
90を270に変えても文字列全体の回転方向が変わるだけで、
文字自体の向きは変わりませんでした。
Gentoo Linux にインストールした gnuplot 4.2 を使っています。
### test.gp utf8
set terminal png medium font "/mnt/c/WINDOWS/Fonts/msgothic.ttc"
set output "test.png"
set title "日本語"
set xtics rotate by 90
set y2label "y2" rotate by 90
plot sin(x)
(1) http://yuffie.jp/upload/files/17445.png
(2) http://yuffie.jp/upload/files/17446.png
0305名無しさん@お腹いっぱい。
2007/12/16(日) 16:07:10tail -f を参考にする
0306名無しさん@お腹いっぱい。
2007/12/26(水) 18:17:28plot sin(x)
とやるとグラフの両端が切れて終わってしまうのは仕様ですか?
0307名無しさん@お腹いっぱい。
2007/12/26(水) 18:20:22値が小さいやつと大きいやつがあるときに中間を波線で省略できませんか?
波線は別にでなくてもいいんですが、数値軸を書き換えたいです。
0308名無しさん@お腹いっぱい。
2007/12/31(月) 13:08:37rand(x) の使い方を教えて下さい。
x に 0 0.5 1.5 など、いろいろ
入れても、1.00 しか返ってきません。
0 を入れた場合、数回は 0〜1の
値が出てくるが、すぐ 1.00 に張り付いてしまいます。
Windows 版 wgnuplot Version 4.2 です。
0309名無しさん@お腹いっぱい。
2007/12/31(月) 13:59:560310名無しさん@お腹いっぱい。
2007/12/31(月) 14:22:44次のマニュアルを読んでもさっぱり解りません。
ちなみに私は、乱数が何であるか、そのseed(種)、
が何なのかについては知っているつもりです。
具体的に、例えば0〜1の実数を返すコードを
教えて下さい。できれば、種の設定についても。
10.1.1 Random number generator
組み込み関数rand(x) の挙動はversion 3.8l で変更されました。
古いgnuplot スクリプトで、rand(x>0) により同じ種からなる
疑似乱数列が生成されることを期待しているような場合は、
代わりにrand(0) を使うように修正する必要があります。
現在の挙動は以下の通りです:
rand(0) 内部に持つ2 つの32bit の種(seed) の現在の値から
生成される[0:1] 区間内の疑似乱数値を返す。
rand(-1) 2 つの種の値を標準値に戻すrand(x) x>0 ならば
両方の種にx の値に基づく値を設定する。
rand({x,y}) x>0 ならばseed1 をx に、seed2 をy に設定する。
0311名無しさん@お腹いっぱい。
2007/12/31(月) 19:40:22ごめん、ネット工作に忙しくて作ってないわwww
0312名無しさん@お腹いっぱい。
2007/12/31(月) 23:02:37自己解決しました。
rand(x) x > 1.00 で種の設定。
以後、rand(0) で0〜1の乱数生成でした。
0313名無しさん@お腹いっぱい。
2007/12/31(月) 23:05:24rand({x,x})とrand(x)の比較はやって見た?
0314名無しさん@お腹いっぱい。
2008/01/06(日) 17:30:08インストール不要でrmを再生できるのはお前だけだと信じていたのに
0315名無しさん@お腹いっぱい。
2008/01/06(日) 17:31:020316名無しさん@お腹いっぱい。
2008/01/09(水) 14:10:21set palette defined (-3 "blue", 0 "white", 1 "red")
としても0の値が白では表示されません、うっすい水色で表示されます
ttp://upfile-2ch.net/light/general/count.cgi?upfile0072.jpg
こんな感じ
0317名無しさん
2008/01/10(木) 19:04:30解決策はありますか?? 教えてください!
0318名無しさん@お腹いっぱい。
2008/01/10(木) 19:14:550319名無しさん@お腹いっぱい。
2008/01/12(土) 22:22:38gnuplotを立ち上げる度に設定ファイルをロードするのがちょっと面倒なので、
起動するときに自動的に設定を読み込むようにするにはどうすればいいですか?
0320名無しさん@お腹いっぱい。
2008/01/13(日) 13:51:57Rだけだと、検索が膨大に出てきてどーしようもない。
0321名無しさん@お腹いっぱい。
2008/01/13(日) 23:10:27「R 統計」で検索
0322名無しさん@お腹いっぱい。
2008/01/15(火) 14:44:07= 統計解析フリーソフト R 【第2章】 =
http://science6.2ch.net/test/read.cgi/math/1152449095/
とか。
0323名無しさん@お腹いっぱい。
2008/01/19(土) 17:10:23のグラフを書くにはどうしたらよいですか?
0324名無しさん@お腹いっぱい。
2008/01/20(日) 08:09:13set parametric
0325名無しさん@お腹いっぱい。
2008/01/21(月) 10:29:45その後は?
0326名無しさん@お腹いっぱい。
2008/01/21(月) 11:07:140327名無しさん@お腹いっぱい。
2008/01/21(月) 14:36:370328名無しさん@お腹いっぱい。
2008/01/22(火) 01:04:39GPLでの公開が条件です
0329名無しさん@お腹いっぱい。
2008/02/06(水) 00:28:281つのカラム(例えば、3だけ)だとうまく行くのですが、…
こんなイメージです。(↓)
plot "data.csv" using 1:2:sprintf("%s+%s",$3,$4) with lines
0330名無しさん@お腹いっぱい。
2008/02/06(水) 10:52:32awkで加工するのが簡単じゃね?
0331名無しさん@お腹いっぱい。
2008/02/06(水) 11:08:360332329
2008/02/06(水) 18:50:55普通はそうですよねぇ…、ちょっと事情がありまして
出来れば gnuplot 単独でやれないかと考えています。
>>331
こんな感じのイメージです。
1カラム目と2カラム目で (x,y) を結んで、その付近に3カラム目と
4カラム目の文字列を打ちたいと考えています。
1.1 3.14 "2008-11-12 00:34JST" Tarou
2.2 3.33 "2008-11-13 00:33JST" Jirou
2.3 2.99 "2008-11-15 N/A" Saburo
3.9 9.99 N/A N/A
4.2 3.33 "2008-11-13 00:33JST" N/A
ちょっと間違いがありました。こんなイメージです。
plot "data.csv" using 1:2 with linespoints ,\
"" using 1:2:sprintf("%s+%s",$3,$4) with labels
gnuplot だけでやろうとすると、label を2回にわけてちょっと
ずらして表示するしかないのかな?
0333名無しさん@お腹いっぱい。
2008/02/07(木) 00:09:390334名無しさん@お腹いっぱい。
2008/02/07(木) 19:35:49それは大丈夫の筈
0335名無しさん@お腹いっぱい。
2008/02/14(木) 00:05:27どこかに置いてませんかね?
0336329
2008/02/14(木) 18:06:44using 1:2:(sprintf("%s+%s",strcol(3),strcol(4)))
で、行けそうな事が分かりました。
質問を見て(?)書いてくれたエキスパートの方、ありがとうございました。
大変に参考になりました!感謝です!
0337名無しさん@お腹いっぱい。
2008/03/06(木) 21:14:30やっぱり座標をあわせてlabelを置くしかないのでしょうか。
0338名無しさん@お腹いっぱい。
2008/03/08(土) 08:05:540339名無しさん@お腹いっぱい。
2008/03/08(土) 15:17:140340名無しさん@お腹いっぱい。
2008/03/08(土) 15:38:380341名無しさん@お腹いっぱい。
2008/03/19(水) 17:13:53元データが 19 Mar 16:59:17 みたいな感じで
help date を元に
set format x "%d %B %H:%M:%S"
ってやったら plot 時に Bad format character って言われてしまいます
そもそも help date すると
This form of the command is deprecated. Please see `set style function`.
って書いてあるけど set format x 以外に
どういうやり方をすればいいのか help set style function しても
よくわからないです… orz
■ このスレッドは過去ログ倉庫に格納されています