gnuplot を使おう。 その3

2011/08/25(木) 12:15:50.61
グラフ描画ソフト gnuplot のスレ。

gnuplot 公式 Web ページ
http://www.gnuplot.info/

前スレ
gnuplot を使おう。 その2
http://hibari.2ch.net/test/read.cgi/unix/1164719425/
2019/12/31(火) 06:08:44.69
>>759だと全部くっついて1個のグラフみたいになった
やるとしたらこんな感じかな
p for [f in system("ls file*")] f t f
もう少しスマートにできたらいいのだが
761名無しさん@お腹いっぱい。
垢版 |
2019/12/31(火) 08:03:31.69
ファイルのお尻に空行を入れる
2020/03/28(土) 22:55:30.48
目盛り線の入れ方,set xticsとかで目盛り間隔指定できるけど,
x軸をn分割して目盛りを入れるみたいなことってできますか?
例えば,x軸が0〜10のとき,「4」を指定したら2.5,5,7.5に目盛りを打つ,
「20」を指定すると0.5ごとに目盛りを打つとか。

なんでこんなことがしたいかっていうと,
大量の数値データからスクリプトで大量のグラフ作ってepsに出力,
TeXに食わせて最終的にPDF化してます。
数値データはいろんな種類があって軸の範囲はautoscaleに任せるんだけど,
デフォルトでplotすると目盛り間隔が狭すぎたり広すぎたりするから,
軸の分割数を統一できるといいなあと思う次第で。

なんとなく簡単にできそうな気がしてマニュアル見たんだけど,
自分で見た限りだとそんな機能なさそうでした。
やるとしたら一旦ダミーでplotしてGPVAL_X_MIN/MAXとか
使って計算するしかないかな。めんどくさいけど。
2020/03/31(火) 13:28:00.32
何その用途ならgnuplotじゃなく、今ならpythonとか使った方がいいんじゃない?
仮にそれが解決しても、また不満が出てきそうだけど…
2020/03/31(火) 20:45:09.05
pythonでgnuplotのスクリプトを吐けば解決
2020/04/01(水) 21:17:04.56
>>762はpythonかわかんないけど
スクリプトでやってるんじゃないの
その上でgnuplotの機能自体でできないか
って聞いてんだと思うけど

答えとしては結局スクリプトでやるのが
正解だと思うけど
766名無しさん@お腹いっぱい。
垢版 |
2020/04/21(火) 15:08:52.29
こんにちわ。
なんと、「算術平均」の拡張版ができました。こちらをご覧ください。
http://www7b.biglobe.ne.jp/~river_r/bm/AveRage.html
2020/05/18(月) 18:24:32.03
Vimにデフォルトでシンタックスハイライトがない言語gnuplot
2020/05/18(月) 20:45:42.06
gnuplotって言語だったの?
2020/05/18(月) 23:42:48.76
そりゃチューリング完全だし。
770名無しさん@お腹いっぱい。
垢版 |
2020/08/02(日) 10:07:20.70
age
771名無しさん@お腹いっぱい。
垢版 |
2020/08/10(月) 10:44:59.99
Windows版 5.2.8の3次元図での問題。
マウスでドラッグすると座標軸が多数表示されて重なってしまう。

これってバグ? それともパラメータ設定で回避できるの?
ver4.xあたりではこういう問題は発生してなかったと思う。
772名無しさん@お腹いっぱい。
垢版 |
2020/08/27(木) 21:46:31.33
誰か答えてあげて
うちとこはWindows版使ってないからわからない
2020/09/03(木) 12:06:37.04
>>771
bug
2020/09/03(木) 12:09:17.84
splotをPNGとかの2dイメージではなく
3dでfile出力する事って可能ですか?
775名無しさん@お腹いっぱい。
垢版 |
2020/10/25(日) 17:38:43.49
過疎ってますなあ
2020/10/25(日) 22:15:31.34
3dファイルに対応して
2020/12/09(水) 09:17:58.89
https://i.imgur.com/BWhdsXV.jpg
778名無しさん@お腹いっぱい。
垢版 |
2021/03/15(月) 20:29:07.36
set xlabelとかで、ラベルの途中に改行を入れた時の
行間というか改行幅って調節できるんですかね?

2行目以降をset labelで細かく位置を調節すれば
色々自由にできるとは思いますが、
ちょっと行間を詰めたいだけなので、
簡単に設定できると嬉しいと思いまして。
779名無しさん@お腹いっぱい。
垢版 |
2021/06/04(金) 07:23:10.50
とあるスクリプトからパイプでgnuplotにコマンド送ってイメージファイル作らせたりしてるんだけど、Ctrl+Cで中断させようとすると、スクリプトは終わるのにgnuplotは終わらずにエラーメッセージ吐いたりする。
gnuplotがSIGINT受けても止まらないせいだと思うんだけど、何かの設定で止まるようになんないかな。
ソース眺めてみたけどよーわからん。
OSはLIinux。

って誰もみてないか。
2021/06/04(金) 07:31:04.07
>>779
kwsk
2021/06/04(金) 23:41:39.38
>>779
再現するコード簡単に書けない?
2021/06/07(月) 20:38:57.59
おお、ありがたや。
perlの例だけど、openでgnuplotにパイプをつないで、
コマンドとインラインデータを流し込む。
例えばこんな風。
2021/06/07(月) 20:39:26.83
for my $k (1 .. 200){
my $file = sprintf 'file%03d', $k;
my @xdata = (1 .. 300);
my @ydata;
push @ydata,rand 1 for(0 .. 300);

open my $fh, '|-', 'gnuplot';
print $fh <<EOD;
set term postscript eps
set output "$file.eps"
plot "-" w l
EOD

for my $i (0 .. $#xdata){
print $fh "$xdata[$i]\t$ydata[$i]\n";
}
print $fh "e\n";
}
プロットするデータはここでは乱数で作ってるけど
実際は実験データとかを取り込んだもの。
2021/06/07(月) 20:40:30.07
あら、インデントは消えちゃうのね。

ひと組300行のデータからイメージファイルを作って、
それをループで回して200回も繰り返すからそれなりに時間がかかって、
途中でCtrl+Cで止めようとするとperlは止まるんだけど、
gnuplotは止まらず混乱?してplotのインラインデータ部分を
コマンドとして解釈してエラーメッセージを出したり、
タイミングによってはepsファイルに行くべき文字列が
stdoutに出てきたりする。
2021/06/08(火) 09:20:56.57
再現しないよ

783を例えばhogeというファイル名で保存して
$ ./hoge
途中,Ctrl+Cするとgnuplotも止まる
2021/06/08(火) 13:19:49.14
ゴメンゴメンperlが止まってエラーが出てないだけだった
外側のfor消して300の乱数データを時間が掛かるように適宜大きくしたら
以下のようなエラーが出た

...
gnuplot> 168373
^
line 160265: invalid command


gnuplot> 168374
^
line 160265: invalid command
...
2021/09/07(火) 10:43:47.41
Androidに移植されたgnuplotいくつかあるみたいだけど、使ってる方でおすすめのあります?

以前は、Droidplot + android terminal emulator つてのを使ってたけど、ずっと更新されずAndroid9ではgoogle playに出てこなくなっちゃった
2021/11/01(月) 11:06:04.36
神ツールgnuplotが末長く神ツールでありつづけますように
2022/01/11(火) 07:21:41.62
制御構造入れたプロットをしたいなら
スクリプトからgnuplotに食わせるより、雛形だけepsに吐かせてpsコードで書いた方がずっと楽よ
行列演算も組み込みだし数値扱うなら多分perlより使える言語
2022/01/11(火) 08:41:38.40
データ読み込みから画像生成までpostscriptに任せられるのはtsv/csvまでだな
readline、substringで分割、cvr(conv to real)、dict/arrayに突っ込むだけ

10/16進数値以外は読めないので汚いデータはpsのregex(要外部ライブラリ)とか使うより前処理した方が楽かと

あとgnuplotのようにlatex記法をサポートしてないので、gnuplotの吐くepsから拾うか、
./makeplot.ps dat1 dat2 ...のように動的に数式を生成するコマンドにしたいなら、psからgnuplot -eやtexコマンドを外部呼び出しして出力を読み込むか

あれ、意外とめんどくさそう…
2022/01/11(火) 15:39:58.80
逆にgnuplotをpsライブラリだと捉えよう、手動でスタイル合わせるより馴染むし
gsなら%pipe%cmdがファイルハンドル返したり%stdin, %stdout使えて楽
2022/01/15(土) 11:38:23.66
gnuplotでもpython matplotlibでも最近はsvgはかせる。
svgならブラウザでviewできるし。仕上げはinkscape。
2022/01/15(土) 13:40:59.86
3次元のsvgとかないのかな?
2022/01/17(月) 07:00:39.22
1/3ごろ gnuplot 5.4.3 がでてます。
数時間Windowsバイナリもアップされています。
2022/01/21(金) 18:18:52.33
パラメータ変えてplotコマンド打っても描画が新しくならないんだけど、なんでだろ?
2022/01/21(金) 19:42:39.72
>>795
環境
2022/01/21(金) 23:28:36.37
>>796
debian sidでgnuplot-x11の方です
gnome41でwaylandな環境なんてすが
同じlinuxなでもxfce4にxorgのマシンだと問題ないんです
waylandのせいかと思うんですが。
まぁ使えないわけじゃないけど、微妙に使い勝手悪いです。。
2022/01/22(土) 06:34:00.66
>>797

wxtターミナルではどうですか?
x11やqtターミナルはドライバープログラム(gnuplot-x11やgnuplot-qt)
が描画するけど
wxtはgnuplot本体が描画するから、違いがあるかも。

後,
Xと通信しない非対話型ターミナルではどうなんでしょう。
例えば

set terminal png
set output 'test1.png'
a=1
plot a*x
set output
set output 'test2.png'
a=2
plot a*x
set output

はちゃんと動作しますか?
2022/01/22(土) 22:50:07.85
>>798
ありがとうございます。
起動するとデフォルトがwxtで、そちらだとたとえば

gnuplot > plot sin(x)
でサイン関数が描画され、次に
gnuplot > plot cos(x)
と続けて打ってもサイン関数のプロットのままで
ウィンドウがアップデートされません。
ウインドウをグラブして拡大したりするとアップデートされます。
terminalに関しては試してなかったので、
termをx11にしたところ、上の例だとcos(x)を新たにプロットするとちゃんとウインドウも再描画されました。あとpngとかpostscriptでも問題ないので
どうやらwxtの問題みたいです。
debianとかgnome4x系になってまだ間もないのでなにかのバグの可能性もあると思いましたが、他に報告が無いみたいなので自分の環境のせいかもしれないです。
とりあえずtermがx11だと問題ないのがわかったのでそれで使っていようと思います。
ありがとうございました、助かりました
2022/01/22(土) 23:36:48.15
replotも?
2022/01/23(日) 00:19:56.20
replotでも再描画されないです
ウインドウの属性が変わらないとアップデートされないので、gnomeのバグかもしれないです
2022/01/23(日) 13:10:12.24
gnuplot-qt on Debian bullseye は大丈夫だよ
2022/01/23(日) 14:20:36.70
最新のtestingのisoを使ってsidにクリーンインストールしたんですけど、qt版はたしか動かなかったです。基本、bullrsdys+って感じだと思います。

他のtesting入れてるマシンではqt版使ってて問題なかったので、試しにx11版に変えてみましたが、問題なしです。
こっちのマシンはずっとtestingで運用してるのでdisplay protocolはxorgのままです。
なんかwaylandとgnome4x系の問題な気がしてきました。
2022/01/24(月) 16:19:00.47
linuxはあまり使わないのでよくわかりませんが、linuxなら開発者のEthan氏が勧めるようにqt ターミナルがいいと思います。
動かないなら仕方ないけど。
linuxなら自分でビルドするのもそれほど苦ではないと思うのでqtターミナル、トライできないかな?
2022/01/24(月) 16:58:28.97
>>803
Qt自体ちゃんと入ってる?
2022/02/03(木) 16:50:49.59
windows11,WSL2,WSLg,gnuplot-5.4.3で
qtだと文字列の末尾が数字の1だと表示がずれる
wxtだと閉じるボタンだけで最大化、最小化ボタンが表示されない
原因がわかる方いますか?
2022/02/03(木) 17:48:20.36
意味がわからん
2022/02/11(金) 15:56:00.88
色んな出力対応してるんだから片っ端から試して上手く動くの使えばいいよ、プレビュー用途ならなおさら
2022/02/19(土) 14:51:34.38
こんなんあるんですね。知らなかった。つかって見よう。
A Jupyter/IPython kernel for Gnuplot
https://github.com/has2k1/gnuplot_kernel
2022/02/19(土) 15:01:51.77
>>806
状況がよくわかりません。wslならgnuplotはlinuxアプリですか?
それともwindowsアプリをwslのterminal上でつかっているのですか。
状況を再現するコマンドやスクリプトを書いてください。
2022/02/19(土) 20:44:09.30
>>806
qtの方は意味不明のままですが、wxtの方はwxtターミナルのプロットウィンドウの右上部に並ぶ
− □ × (それぞれ「最小化」、「最大化」、「閉じる」の動作を)ボタンのうち−、□(最小化、最大化)ボタンが表示されないということかと。
2022/02/19(土) 20:45:34.46
>>806
gnuplotは5.4.3 のlinuxバイナリということで、windows11,wsl2,wslgだということですね。
gnuplotの問題なのですか?wslgの問題かも知れません。VcXsrvもいれてみてこちらでも試してみてはいかがでしょうか。
2022/03/22(火) 14:45:32.74
Windows上でのpngcairoターミナルでフォントの表示の乱れがbug ticketに上がっています。

# pngcairo: uppermost pixel in key, label etc missing
https://sourceforge.net/p/gnuplot/bugs/2512/

# Bad kerning with pngcairo and gnuplot 5.4.1
https://sourceforge.net/p/gnuplot/bugs/2397/

どちらもpangoライブラリが関係しているようです。
Ethanさんはpangoのフォントやバージョンを変えてみればいわれたので
色々なバージョンpangoをビルドして、ライブラリ置き換えてみましたが大きな改善はしませんでした。

また、windows上のpangocairoは既定ではWindows nativeのバックエンドを使っています。
環境変数PANGOCAIRO_BACKENDをfcにセットすることにより、バックエンドをfontconfig
にすることができます。
この作業がworkaroundとして現状有効の様です。
2022/03/26(土) 00:59:04.38
https://i.imgur.com/w1RHIs6.jpg
2022/04/02(土) 18:01:39.03
brewからgnuplotインストールしたいんだけど、4時間以上やってもまだ終わらない
異常?正常?
2022/04/02(土) 18:07:55.25
おマカン
2022/04/02(土) 18:42:19.91
うちの環境Macだけど確か1日くらいかかった
なんやかんやライブラリ、アホほどインスコされたよ
2022/04/19(火) 20:48:40.33
プロットするデータの個数によって、with linesとwith pointsを自動切換えできないでしょうか?

多くのデータファイルから自動で2Dプロットを作成しています。
基本的には
  plot "file.dat" with lines
でスッキリした線だけのプロットを描くのですが
たまにX,Yのデータが1組しかないファイルがあり
その場合プロットが目に見えない点だけになってしまいます。

そこでファイル中にデータが1組しかない時は
  plot "file.dat" with points
に自動的に切り替えてくれるとありがたいです。

設定やplotコマンドの書き方でなんとかならないでしょうか?
もしくは、データファイルの書き方で1組のX,Yデータでも
目に見えるポイントを出す方法があればそれでもいいです。
2022/04/19(火) 21:13:28.56
>>818
無いな

スクリプト組んで記述を変えるのが正解だと思う
2022/04/20(水) 23:47:10.59
そっかー
マニュアル読み込んでみても確かにできる気がしない
2022/04/21(木) 00:15:36.39
あるいは with linespoints とか?
2022/04/21(木) 17:17:27.17
>>818
stats とif でできるかな。
データがないときはSTATS_recordsはUndefined になることに注意して
(インデント消えるとおもうから,適当に足してくれ)

stats 'data.dat' nooutput
if (STATS_records == 1) {
plot 'data.dat' with points
} else {
plot 'data.dat' with lines
}
2022/04/21(木) 17:21:29.25
stats を使えばいろんなことができる。
詳しくは以下参照。
https://ss.scphys.kyoto-u.ac.jp/person/yonezawa/contents/program/gnuplot/stats.html
あと,このページ主のページは本当使えるチップスがある。
2022/04/21(木) 17:32:07.56
>>821
この発想は無かった!
2022/04/21(木) 17:32:33.64
>>822
ヘェ〜
2022/04/21(木) 20:17:16.73
>>822
初めて知った
827818
垢版 |
2022/04/22(金) 19:20:02.97
statsうまくいきました!ありがとう!
統計情報なんて気にもとめてなかった。

ちなみにデータない時はエラーになって、STATS_recordsは元のままですね。
(初回ならundefined)

米澤先生のサイトはブックマークしてあったけど、忘れてた。。。
828818
垢版 |
2022/04/30(土) 20:53:37.83
5.0系だとログスケールの時にstatsがエラーになるという謎仕様。
5.2以降だと大丈夫みたいだけど、うちの環境だと使いたい端末がインストールができないorz

ところで5chの仕様変更でのせいか輪をかけて過疎化してるね
2022/04/30(土) 21:43:24.22
proxy2chを以下で起動すれば古い専ブラでも書ける
http://egg.5ch.net/test/read.cgi/software/1649749366/62
830
垢版 |
2022/05/01(日) 18:59:29.08
>>828
> 5.0系だとログスケールの時にstatsがエラーになるという謎仕様。
そうなんですか。しかし,5.0系とは懐かしいですな。

> 5.2以降だと大丈夫みたいだけど、うちの環境だと使いたい端末がインストールができないorz
5.2でインストールできない terminal なんてなんでしょう。5.2でdeprecateになったterminalなのでしょうか。
831818
垢版 |
2022/05/02(月) 20:28:54.72
>>830

あ、ウチ環なので一般的な話じゃないです。

LinuxやらSolarisやらMacやら、OSバージョンも複数あって
インストールされてるライブラリもまちまちで
どのマシンでも同じバージョンのgnuplotを動かそうとすると
ライブラリが足りなくてmake失敗したりとか。

今んとこ全部のマシンで成功したのが5.0系というだけの話。
2022/05/19(木) 00:17:38.26
set term qt widget <id>
の<id>って何を指定すればいいのかな?
他のアプリのウィンドウに表示できそうなんだけど違うのかな?
マニュアルみてもよくわからない。

x11なら
set term x11 window "<string>"
でウィンドウIDを指定すれば別アプリに表示させられるから
Qtでも出来そうな気がするんだけど違うかな。
2022/05/19(木) 06:58:39.63
そんな機能があったのね
douyatte使うんだ?
2022/05/28(土) 21:26:00.53
じぶんはTcl/TkのGUIアプリでウィジェットにgnuplotを表示させてます。
んでTkのscaleをぐりぐりするとグラフがぐりぐり動きます。

Tkinterならwinfo_idで出来そう
2022/06/08(水) 17:26:55.60
発音って
ヌープロット
でいいですか?
2022/06/09(木) 14:38:46.23
ぐにゃぷろーと
2022/06/15(水) 17:08:03.32
ぬぷろ
2022/06/15(水) 17:33:08.22
グヌープロット
2022/06/16(木) 00:32:17.30
ぐにゅっとプロット
2022/06/16(木) 01:34:35.12
ぬぷっ
2022/07/11(月) 12:34:12.98
5.4.4beta (5.4.4 のプレリリース)が出てます。
しばらくしたら,正式に5.4.4がリリースされるでしょう。
2022/07/13(水) 20:00:17.82
>>841 5.4.4 の変更Gnuplot Q&A 掲示板を見てください。
2022/07/18(月) 15:30:31.42
gnuplot-5.4.4がアップロードされました。
Windowsバイナリもアップロードしました。
https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.4/
2022/08/25(木) 02:06:06.64
sidで壊れたわ
2022/09/06(火) 17:11:28.99
New gnuplot subsystem "watchpoints"

開発版で実装されます。
gnuplot beta MLの当該ポストのアーカイブのURLです。

https://sourceforge.net/p/gnuplot/mailman/message/37703162/
2022/09/07(水) 22:25:20.17
>>845
この実装を
2022/09/07(水) 22:33:21.24
↑途中で失礼しました。
>>845
この実装をONにした開発版Windowsバイナリを以下に置いてます。

demo ディレクトリ下の watchmouse.dem, watchpoints.dem を実行してみてください。
2022/09/07(水) 22:35:22.99
>>847
すみません。
開発版のWindows とCygwin バイナリの置き場
http://tmacchant33.starfree.jp/gnuplot_bin.html
2022/09/08(木) 01:57:31.03
なんかどういう効果があるのかいまいち不明だわ
2022/09/08(木) 12:22:06.09
>>849
watchpoints.demの結果をpdfにしてみました。
(watchmouse.demはマウスを動的に使って試すので略)
http://tmacchant33.starfree.jp/Files/watchpoits.pdf
2022/09/08(木) 13:26:34.64
横からあーなるほど!
便利だね
2022/09/14(水) 07:22:37.30
ある数値aとbがあるとき、a±bを横長の帯として表したいんだが、どうしたらシンプルに実現できるかな?
0 a b
0.1 a b
...
というファイルを作ってwith filledcurveでプロットすればそれらしく見えると思うけど、中間生成物を沢山作りたくない
2022/09/14(水) 11:13:59.98
>>852
回答ではないかもしれないけどファイル作りたくないならデータブロックをりようすればよいのでは

$data << EOF
0 a b
0.1 a b
EOF
2022/09/14(水) 11:21:16.62
>ある数値aとbがあるとき、a±bを横長の帯として表したい
伝わらん
2022/09/14(水) 16:40:46.85
>>854
横軸方向にエラーバーを表示する感じ?
2022/09/14(水) 16:56:40.03
>>854
すみません

>>855
そうです

横軸をx軸と呼ぶことにして、>>852で書いた数値a、bはxによらないということです
で、xによらない定数値としてグラフに描画したいということです
定数aを描画したいだけなら plot a で良いのですが、これにエラーをつけるにはどうしたら良いですかと言い換えることもできます
857名無しさん@お腹いっぱい。
垢版 |
2022/09/14(水) 20:34:10.37
xerrorbarsではなく?
2022/09/15(木) 01:51:00.88
sidのGnuplotなようやく修正されたぞ
チラ裏
2022/09/15(木) 02:15:11.06
>>857
はい。
x軸方向のエラーバーではなく、y軸方向の定数値±定エラーバーを全てのxに渡って表示したいです
レスを投稿する