gnuplot を使おう。 その3
レス数が900を超えています。1000を超えると表示できなくなるよ。
set xlabelとかで、ラベルの途中に改行を入れた時の
行間というか改行幅って調節できるんですかね?
2行目以降をset labelで細かく位置を調節すれば
色々自由にできるとは思いますが、
ちょっと行間を詰めたいだけなので、
簡単に設定できると嬉しいと思いまして。 とあるスクリプトからパイプでgnuplotにコマンド送ってイメージファイル作らせたりしてるんだけど、Ctrl+Cで中断させようとすると、スクリプトは終わるのにgnuplotは終わらずにエラーメッセージ吐いたりする。
gnuplotがSIGINT受けても止まらないせいだと思うんだけど、何かの設定で止まるようになんないかな。
ソース眺めてみたけどよーわからん。
OSはLIinux。
って誰もみてないか。 おお、ありがたや。
perlの例だけど、openでgnuplotにパイプをつないで、
コマンドとインラインデータを流し込む。
例えばこんな風。
↓ 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";
}
プロットするデータはここでは乱数で作ってるけど
実際は実験データとかを取り込んだもの。 あら、インデントは消えちゃうのね。
ひと組300行のデータからイメージファイルを作って、
それをループで回して200回も繰り返すからそれなりに時間がかかって、
途中でCtrl+Cで止めようとするとperlは止まるんだけど、
gnuplotは止まらず混乱?してplotのインラインデータ部分を
コマンドとして解釈してエラーメッセージを出したり、
タイミングによってはepsファイルに行くべき文字列が
stdoutに出てきたりする。 再現しないよ
783を例えばhogeというファイル名で保存して
$ ./hoge
途中,Ctrl+Cするとgnuplotも止まる ゴメンゴメンperlが止まってエラーが出てないだけだった
外側のfor消して300の乱数データを時間が掛かるように適宜大きくしたら
以下のようなエラーが出た
...
gnuplot> 168373
^
line 160265: invalid command
gnuplot> 168374
^
line 160265: invalid command
... Androidに移植されたgnuplotいくつかあるみたいだけど、使ってる方でおすすめのあります?
以前は、Droidplot + android terminal emulator つてのを使ってたけど、ずっと更新されずAndroid9ではgoogle playに出てこなくなっちゃった 神ツールgnuplotが末長く神ツールでありつづけますように 制御構造入れたプロットをしたいなら
スクリプトからgnuplotに食わせるより、雛形だけepsに吐かせてpsコードで書いた方がずっと楽よ
行列演算も組み込みだし数値扱うなら多分perlより使える言語 データ読み込みから画像生成まで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コマンドを外部呼び出しして出力を読み込むか
あれ、意外とめんどくさそう… 逆にgnuplotをpsライブラリだと捉えよう、手動でスタイル合わせるより馴染むし
gsなら%pipe%cmdがファイルハンドル返したり%stdin, %stdout使えて楽 gnuplotでもpython matplotlibでも最近はsvgはかせる。
svgならブラウザでviewできるし。仕上げはinkscape。 1/3ごろ gnuplot 5.4.3 がでてます。
数時間Windowsバイナリもアップされています。 パラメータ変えてplotコマンド打っても描画が新しくならないんだけど、なんでだろ? >>796
debian sidでgnuplot-x11の方です
gnome41でwaylandな環境なんてすが
同じlinuxなでもxfce4にxorgのマシンだと問題ないんです
waylandのせいかと思うんですが。
まぁ使えないわけじゃないけど、微妙に使い勝手悪いです。。 >>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
はちゃんと動作しますか? >>798
ありがとうございます。
起動するとデフォルトがwxtで、そちらだとたとえば
gnuplot > plot sin(x)
でサイン関数が描画され、次に
gnuplot > plot cos(x)
と続けて打ってもサイン関数のプロットのままで
ウィンドウがアップデートされません。
ウインドウをグラブして拡大したりするとアップデートされます。
terminalに関しては試してなかったので、
termをx11にしたところ、上の例だとcos(x)を新たにプロットするとちゃんとウインドウも再描画されました。あとpngとかpostscriptでも問題ないので
どうやらwxtの問題みたいです。
debianとかgnome4x系になってまだ間もないのでなにかのバグの可能性もあると思いましたが、他に報告が無いみたいなので自分の環境のせいかもしれないです。
とりあえずtermがx11だと問題ないのがわかったのでそれで使っていようと思います。
ありがとうございました、助かりました replotでも再描画されないです
ウインドウの属性が変わらないとアップデートされないので、gnomeのバグかもしれないです gnuplot-qt on Debian bullseye は大丈夫だよ 最新のtestingのisoを使ってsidにクリーンインストールしたんですけど、qt版はたしか動かなかったです。基本、bullrsdys+って感じだと思います。
他のtesting入れてるマシンではqt版使ってて問題なかったので、試しにx11版に変えてみましたが、問題なしです。
こっちのマシンはずっとtestingで運用してるのでdisplay protocolはxorgのままです。
なんかwaylandとgnome4x系の問題な気がしてきました。 linuxはあまり使わないのでよくわかりませんが、linuxなら開発者のEthan氏が勧めるようにqt ターミナルがいいと思います。
動かないなら仕方ないけど。
linuxなら自分でビルドするのもそれほど苦ではないと思うのでqtターミナル、トライできないかな? windows11,WSL2,WSLg,gnuplot-5.4.3で
qtだと文字列の末尾が数字の1だと表示がずれる
wxtだと閉じるボタンだけで最大化、最小化ボタンが表示されない
原因がわかる方いますか? 色んな出力対応してるんだから片っ端から試して上手く動くの使えばいいよ、プレビュー用途ならなおさら こんなんあるんですね。知らなかった。つかって見よう。
A Jupyter/IPython kernel for Gnuplot
https://github.com/has2k1/gnuplot_kernel >>806
状況がよくわかりません。wslならgnuplotはlinuxアプリですか?
それともwindowsアプリをwslのterminal上でつかっているのですか。
状況を再現するコマンドやスクリプトを書いてください。 >>806
qtの方は意味不明のままですが、wxtの方はwxtターミナルのプロットウィンドウの右上部に並ぶ
− □ × (それぞれ「最小化」、「最大化」、「閉じる」の動作を)ボタンのうち−、□(最小化、最大化)ボタンが表示されないということかと。 >>806
gnuplotは5.4.3 のlinuxバイナリということで、windows11,wsl2,wslgだということですね。
gnuplotの問題なのですか?wslgの問題かも知れません。VcXsrvもいれてみてこちらでも試してみてはいかがでしょうか。 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として現状有効の様です。 brewからgnuplotインストールしたいんだけど、4時間以上やってもまだ終わらない
異常?正常? うちの環境Macだけど確か1日くらいかかった
なんやかんやライブラリ、アホほどインスコされたよ プロットするデータの個数によって、with linesとwith pointsを自動切換えできないでしょうか?
多くのデータファイルから自動で2Dプロットを作成しています。
基本的には
plot "file.dat" with lines
でスッキリした線だけのプロットを描くのですが
たまにX,Yのデータが1組しかないファイルがあり
その場合プロットが目に見えない点だけになってしまいます。
そこでファイル中にデータが1組しかない時は
plot "file.dat" with points
に自動的に切り替えてくれるとありがたいです。
設定やplotコマンドの書き方でなんとかならないでしょうか?
もしくは、データファイルの書き方で1組のX,Yデータでも
目に見えるポイントを出す方法があればそれでもいいです。 >>818
無いな
スクリプト組んで記述を変えるのが正解だと思う そっかー
マニュアル読み込んでみても確かにできる気がしない あるいは with linespoints とか? >>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
} statsうまくいきました!ありがとう!
統計情報なんて気にもとめてなかった。
ちなみにデータない時はエラーになって、STATS_recordsは元のままですね。
(初回ならundefined)
米澤先生のサイトはブックマークしてあったけど、忘れてた。。。 5.0系だとログスケールの時にstatsがエラーになるという謎仕様。
5.2以降だと大丈夫みたいだけど、うちの環境だと使いたい端末がインストールができないorz
ところで5chの仕様変更でのせいか輪をかけて過疎化してるね >>828
> 5.0系だとログスケールの時にstatsがエラーになるという謎仕様。
そうなんですか。しかし,5.0系とは懐かしいですな。
> 5.2以降だと大丈夫みたいだけど、うちの環境だと使いたい端末がインストールができないorz
5.2でインストールできない terminal なんてなんでしょう。5.2でdeprecateになったterminalなのでしょうか。 >>830
あ、ウチ環なので一般的な話じゃないです。
LinuxやらSolarisやらMacやら、OSバージョンも複数あって
インストールされてるライブラリもまちまちで
どのマシンでも同じバージョンのgnuplotを動かそうとすると
ライブラリが足りなくてmake失敗したりとか。
今んとこ全部のマシンで成功したのが5.0系というだけの話。 set term qt widget <id>
の<id>って何を指定すればいいのかな?
他のアプリのウィンドウに表示できそうなんだけど違うのかな?
マニュアルみてもよくわからない。
x11なら
set term x11 window "<string>"
でウィンドウIDを指定すれば別アプリに表示させられるから
Qtでも出来そうな気がするんだけど違うかな。 そんな機能があったのね
douyatte使うんだ? じぶんはTcl/TkのGUIアプリでウィジェットにgnuplotを表示させてます。
んでTkのscaleをぐりぐりするとグラフがぐりぐり動きます。
Tkinterならwinfo_idで出来そう 5.4.4beta (5.4.4 のプレリリース)が出てます。
しばらくしたら,正式に5.4.4がリリースされるでしょう。 >>841 5.4.4 の変更Gnuplot Q&A 掲示板を見てください。 New gnuplot subsystem "watchpoints"
開発版で実装されます。
gnuplot beta MLの当該ポストのアーカイブのURLです。
https://sourceforge.net/p/gnuplot/mailman/message/37703162/ ↑途中で失礼しました。
>>845
この実装をONにした開発版Windowsバイナリを以下に置いてます。
demo ディレクトリ下の watchmouse.dem, watchpoints.dem を実行してみてください。 >>849
watchpoints.demの結果をpdfにしてみました。
(watchmouse.demはマウスを動的に使って試すので略)
http://tmacchant33.starfree.jp/Files/watchpoits.pdf ある数値aとbがあるとき、a±bを横長の帯として表したいんだが、どうしたらシンプルに実現できるかな?
0 a b
0.1 a b
...
というファイルを作ってwith filledcurveでプロットすればそれらしく見えると思うけど、中間生成物を沢山作りたくない >>852
回答ではないかもしれないけどファイル作りたくないならデータブロックをりようすればよいのでは
$data << EOF
0 a b
0.1 a b
EOF >ある数値aとbがあるとき、a±bを横長の帯として表したい
伝わらん >>854
すみません
>>855
そうです
横軸をx軸と呼ぶことにして、>>852で書いた数値a、bはxによらないということです
で、xによらない定数値としてグラフに描画したいということです
定数aを描画したいだけなら plot a で良いのですが、これにエラーをつけるにはどうしたら良いですかと言い換えることもできます sidのGnuplotなようやく修正されたぞ
チラ裏 >>857
はい。
x軸方向のエラーバーではなく、y軸方向の定数値±定エラーバーを全てのxに渡って表示したいです >>859
こういうこと?
$ cat data.dat
0 -1 2
0.1 -1 2
0.2 -1 2
$ cat plot.gp
set xrange [-.1:.3]
set yrange [-2:3]
plot 'data.dat' u 1:2:3 with filledcurves
pause -1
$ gnuplot plot.gp >>860
そうです
任意の面積の塗り潰しがやりたいことです >>861
860を実行すると塗りつぶした長方形となるんだが,やりたいのはそれなの。
yの値がxに依存する場合も考えるのかな?
x, yのデータが与えられてぬりつぶしの幅を簡単に変えたい。
データの第3列目に書くのは面倒。
こんなことでいいですか? >>865
> 860を実行すると塗りつぶした長方形となるんだが,やりたいのはそれなの。
>>861で申したように、そうです
それを中間ファイルを用意せずにやりたいということです
> yの値がxに依存する場合も考えるのかな?
>>856,859で申したように、yもエラーの幅も横軸に依存しません
> x, yのデータが与えられてぬりつぶしの幅を簡単に変えたい。
> データの第3列目に書くのは面倒。
> こんなことでいいですか?
いいえ
与えられるのは定数値a、bだけです
aはいわば中央値を、bはいわばエラーの幅を表します
これらは定数なので、xによりません
したがって、わざわざ
x y ye
なるフォーマットのファイルを用意するのが面倒だというのが>>852で申したことです おそらく>>860は回答のつもりで「こういうこと?」と聞いていて、質問者>>861は見た目のつもりで「そうです」と言っているのですれ違いが起きている。
で、>>861の「任意の面積」とは流れを踏まえれば明らかに「任意の矩形」という意味だが>>865 (>>860,862,867あたりと同じ人だろう) は額面通りに受け取ってしまったばかりにxに依存する何かを想定している。
視点によっては回答者が文盲にも見えるし質問者が問題を抱えているようにも見えるのだろう。 >>869 は間違い。
ただ単にfiledcuvesと使うと中心がaにはならないみたいだがあとは自分でやってくれ。
# begin
a=-1
b=2
set print $data
do for [i=0:10] { print 0.1 * i}
unset print
set xrange [-.1:1.1]
set yrange [-2:3]
plot '$data' u 1:(a):(b) with filledcurves
set terminal pngcairo
set output '852_02.png'
replot
set output
set terminal @GNUTERM
# end
http://tmacchant33.starfree.jp/Files/852_02.png >>871
それはdataなるファイルを作ってるからお題にそぐわないのでは? あと、ファイルを作ってfilledcurveする案で妥協するなら、わざわざ中間の点を打つ必要はないと思う
両端だけ決めてfilledcurveするので十分 >>872, 873
>それはdataなるファイルを作ってるからお題にそぐわないのでは?
それはそうなんですが
外側にファイルを作らなければ実際上そう面倒にならない。
中間ファイルの役割をスクリプトの中に実現すために
データブロックがgnuplotに実装されたのだから
それを使って実現しても実際上そんなに問題でないとおもいます。
> 両端だけ決めてfilledcurveするので十分
それ書き込んでから気づきました。 中間ファイルが嫌ならスクリプトに含めりゃええがな
>>871を書き換えるなら
$ cat plot.gp
a=-1
b=2
set xrange [-.1:1.1]
set yrange [-2:3]
set terminal pngcairo
set output '852_02.png'
plot '-' u 1:(a):(b) with filledcurves
0
1
$ gnuplot < plot.gp 5.4.5 のβリリースがでました。
https://sourceforge.net/p/gnuplot/mailman/message/37712536/
Changes in 5.4.5
================
* NEW "set key offset <dx>, <dy>" tweaks placement of the key
* NEW data-driven histogram colors (variable color from extra using column)
* CHANGE re-order drawing 3D labels to come after pm3d depthorder surfaces
* CHANGE hpgl: add terminal option "fontscale <value>"
* CHANGE for nonuniform matrix data, column(0) returns linear position in matrix
* CHANGE set pointintervalbox 0 disables drawing the background box Bug #2544
* FIX svg: hypertext font handling
* FIX track columnheaders of multiple data blocks in a single file Bug #2538
* FIX Clean up positioning of polar border, raxis, and theta tics Bug #2130
* FIX Autoscaling of logscaled raxis
* FIX memory corruption if a small plot structure is recycled Bug #2550
* FIX regression in 5.4.4 - promotion of string to integer should
should not assume that a leading 0 means octal Bug #2551
* FIX Windows qt: "pause -1" should not block mousing Bug #2549 重要なバグ修正があるので年末予定のスケジュールを早めてgnuplot 5.4.5 がリリースされました。
Windowsバイナリもアップロードされています。
https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.5/ C++からデータをパイプでgnuplotに流し込むことを考えています
以下のソースはLinuxではうまくいったのですが
mingwでビルドしてWindowsで実行するとうまく行きません
(ソース分けます)
#include <string>
#include <cstdio>
#include <memory>
#include <ctime>
#include <map>
#include <cmath>
using namespace std;
using Series = map <double, double>;
static const double pi (acos (-1));
static const double MIN (0), MAX (pi * 4);
static const double INTERVAL ((MAX - MIN) / 100);
static const double PHI (0);
static const double OMEGA (pi / 8);
static const double DURATION (2); (続き)
int main ()
{
string gnuplot_path ("gnuplot");
FILE fp (popen (gnuplot_path.c_str (), "w"));
if (!fp)
return -1;
fprintf (fp, "reset\n");
fprintf (fp, "set yrange [-1:1]\n");
clock_t time0 (clock ());
for (double second (static_cast <double> (clock () - time0) / CLOCKS_PER_SEC);
second < DURATION; second = static_cast <double> (clock () - time0) / CLOCKS_PER_SEC) {
Series series;
for (size_t i (0), last ((MAX - MIN) / INTERVAL); i < last; ++ i) {
const double x (MIN + i * INTERVAL);
series.insert (make_pair (x, sin (x - PHI + OMEGA * second)));
}
fprintf (fp, "set title 't = %1.2f'\n", second);
fprintf (fp, "plot '-' title 'sin' with lines\n");
for (const Series::value_type &point: series)
fprintf (fp, "%f %f\n", point.first, point.second);
fprintf (fp, "e\n");
fflush (fp);
}
pclose (fp);
return 0;
} >>887
mingw gnuplotの5.4はpipeの扱いにバグがあります.
最近修正されたのですがリリース版修正されるのは次のリリース(5.4.6)になります.
5.2のgnuplotを使うか 890 途中でかきこんでしまいました.5.2.xを使うか5.5(開発版)を使うかです.
5.5(開発版)のバイナリは以下
http://tmacchant33.starfree.jp/gnuplot_bin.html >>890,891
有難うございます
試してみまするる >>890,891
このあとエラーとgnuplotのバージョン情報を貼ろうと思ったのですが
昨夜は全然書き込めなくなりました
バージョンはご懸念の通り5.4 patchlevel 5になります
不完全な書き込みにも関わらず情報提供をありがとうございます >>890,891
ビンゴでした
Windows版は5.2.8にしたら意図通り動作しました
(ちなみにLinuxで動作していたのはDebianのstableのやつで5.4.1でした
5.4系列でパイプに問題があるのはWindows版だけかもしれません)
不完全な情報からご回答を頂きまして本当に有難うございました Windowsで
tail -f hoge.gp | gnuplot
のようにしたいのですが
tail -fのように使えるコマンドってありますか?
スレ違いのような気もしますが一連ってことでお聞きします pwshで以下のようにして出来ました
gc hoge.gp -tail 1 -wait | gnuplot msys2 や busybox-win32 などを使うのも手だと思います. >>897
有難うございます
なるほどmsys2にtailが入ってるだろうから
それでも良さそうですね Gnuplot plans: the start of version 6
https://sourceforge.net/p/gnuplot/mailman/message/37747332/
ソースのクローンの方法
git clone -b branch-6-0-stable git://git.code.sf.net/p/gnuplot/gnuplot-main
なお,5.4.6は2023年初旬にリリースされるようです. 今年後半から開発版(5.5)に入ったwatch points, polar grid とfunction blockが入るのは (途中ですみませんでした.)
が入るのは間違いないでしょう.いずれも魅力的な改変です.
6.0.0alphaにはsharpenという機能が入りました. 現バージョンって、プロシージャ的なプロットってできるんでしたっけ?
新しく機能追加するならそういうのの気もする プロシージャ的なプロットいう言葉がPython 的な関数ブロックで定義された
関数をプロットすることなら,最近開発版に実装されたfunction block ですね
6.0.0ではこれがリリース版で使えるようになります 6.0.0alphaのマニュアルのスナップショットを挙げておきます.
http://tmacchant33.starfree.jp/Files/gnuplot600alpha20221212.pdf
p24のNew features in version 6
を見ると新しい機能がわかります. >>905さん
ありがとうございます。
自分が書いたプロシージャ的というのは、L-systemで表現されるみたいなルールベースのプロットという意味です
function blockを見てみましたがコードのモジュラー化みたいで、自分の思ってたのとは違うみたいでした。
でもこんな機能があるの初めて知りました
まぁ他の言語で数値を得て描画だけさせるという方法で可能だし、ソフトウェアの複雑化という意味で変な可能は実装しないほうが良いのかもしれないですが。 竹の先生のページに最新の開発版の情報が紹介されています
整理されて書かれていますのでぜひご覧ください
http://takeno.iee.niit.ac.jp/~shige/unix/gnuplot/gpinfo-2023.html#info-20230125 >>909
関数いいな
もうgnuplotだけで立派なプログラム書けそうだな
CGライブラリの充実したスクリプト言語 CGに強いスクリプト言語としてpostsciptに勝つには、あとは関数型プログラミングサポート(高階手続き)や名前空間、評価環境だろうけど
この辺の言語設計の基礎に手を入れると既存のスクリプトが色々壊れそうだから、やりすぎかね? 5.4.6が来週にはリリースされるようです.
5.4のいやバージョン5のラストリリースになる予定です.
https://sourceforge.net/p/gnuplot/mailman/message/37775397/
Changes in 5.4.6
================
* NEW set key {columns <exact no of columns>}
; set key {keywidth <exact width>}
* NEW XDG support
; startup file: $XDG_CONFIG_HOME/gnuplot/gnuplotrc
; history file: $XDG_STATE_HOME/gnuplot_history
; wxt configuration: $XDG_CONFIG_HOME/gnuplot/gnuplot-wxt.conf
* CHANGE remove "alldoc" build target
* CHANGE plot with polygons fillstyle empty really does mean empty
* FIX windows: various problems mixing piped input and stdin Bug #2491
* FIX x11: bad interactions of lt nodraw, bgnd and dash pattern Bug #2572
* FIX wxt: export-to-file widget should preserve line properties
* FIX svg: set initial default fill to "none"
* FIX png: back-compatibility with very old versions of gdlib Bug #2579
* FIX variable pointtype, pointsize in plot style yerrorlines
* FIX border color for polygons with variable fillcolor
* FIX definition followed by iteration in a plot command Bug #2580
* FIX parametric plot with filledcurves y1=<limit> Bug #1797 Gnuplot Q&A 掲示板 3537 に 5.4.6 のNEWSの訳読めます 5.4.6でXDGがサポートされましたが,wxGTK が2.8の場合うまくビルドできないようです.
https://sourceforge.net/p/gnuplot/bugs/2587/
開発版では修正済みだったのですが5.4.6へのXDGサポートのバックポート時に
反映されていなかったようです.
というわけで5.4.7が出るようです 開発版のgnuplotをUbuntu(22.04)上でビルドする手順をまとめました
Debian系なら似たような手順を使えると思います
https://sourceforge.net/p/gnuplot/support-requests/282/ >>911
そりゃスクリプト言語としてはpostscriptの方が優れてるし、言語仕様もしっかりしててドキュメントも多い
しかし誰でも何となくで書けるalgol-likeな言語であることが何よりも重要なんだわ >>911 >>918
gnuplotはスクリプト型のグラフ作成ソフトでpostscript言語とは目指してるものが違うように思います.
比べるならばpython のmatplotlibでしょうか.
私は勝負グラフはmatplotlibに移行しました.
ただ,通常のプロットはgnuplotが手軽で利用しています. 5.4.6 Windows バイナリにfontconfig 関係のファイルを含むようにしました.
PANGOCAIRO_BACKENDをfontconfig(fc)に設定するときの警告をなくすためです コルーチン、スレッド/プロセス管理、高階手続き、例外機構などpsの先進的だった機能もpython3系で追い付かれた感があるわな
当然エコシステムでも敵わないから、psの書き手はますます減りそうで寂しい yieldとかあったな、本当に先進的
俺はgnuplotに吐かせたpsコードに引数処理、与えたファイルとストリームの読み書き、素直なデータのパースを書き加える程度
単に他の言語でラッパを書くとファイルが増えて面倒という理由だけど 皆さんpsの高度な機能使ってるんですね
自分は作成したらプリントするか、ベクター系のソフトで編集する位だけど、他の皆さんかどういう用途で使ってるのか想像つかないです なるほど
フラクタルとか、難しい数式をビジュアル化するとか面白そうですね 標準配布のgnuplot環境には大抵ps処理系(組み込み、gs等インタプリタ)が含まれてるから確かに昔は重宝したけ
今のPC環境なら選択肢は無数にあるから好きな言語選べば良いと思うけどね 開発版の新機能について竹の先生が紹介されています.
http://takeno.iee.niit.ac.jp/~shige/unix/gnuplot/gpinfo-2023.html#info-20230407 5.4.7testing がでました
Changes in 5.4.7
================
* FIX pseudofiles '+','++' must ignore "set datafile columnheader" Bug #2585
* FIX data from an array must ignore "set datafile columnheader" Bug #2585
* FIX various problems with unbounded plot iteration Bug #2589
* FIX allow plot ... smooth acsplines with filledcurves Bug #2592
* FIX "plot title at {end|beginning}" belongs in KEYSAMPLE layer
* FIX handle empty string in last field of csv file
* FIX Handle nonlinear axes during contour generation Bug #2593
* FIX yerrorbars key sample should match bars in the plot Bug #2598
* FIX "plot with table" must skip all smoothing operations Bug #2610
* FIX cairolatex/epslatex: prevent doubled text in opaque textboxes
* FIX wxt: versions prior to 3.0 do not support XDG Bug #2587
* FIX wxt: fontscale and fontsize handling was inconsistent Bug #2373
* FIX tikz epslatex cairolatex: updated to work with TeXLive2023 Bug #2613
* FIX correctly report cardinality of an empty array is zero Bug #2616
* FIX ignore datafile separator when plotting from an array
* FIX combination of pm3d options "at b" or "at t" with "depthorder"
* FIX combination of 'autotitle columnhead' and 'using col("key")' Bug #2620
* FIX do not complain if XDG files are not found because no $HOME Bug #2623
* FIX windows terminal: arrow length corrected for aspect ratio Bug #2565 gnuplot 5.4.7 がリリースされました
https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.7/
これが今度こそ最後にVer.5のリリースとなり,次は6.0.0になると思います `kittycairo` terminalが現在の開発版にくみこまれました
+" The `kittycairo` terminal generates in-window output on terminal emulators",
+" that support the kitty graphics protocol. The actual drawing is done via",
+" cairo, a 2D graphics library, and pango, a library for text rendering.",
+" The kitty protocol is an alternative to sixel graphics, with the advantage",
+" of support for 24-bit RGB colors and slightly lower required bandwidth to",
+" transfer the image data between computer and terminal in a remote session.",
+"",
+" Syntax:",
+" set terminal kittycairo",
+" {{no}enhanced} {mono|color}",
+" {font <font>} {fontscale <scale>}",
+" {linewidth <lw>} {rounded|butt|square} {dashlength <dl>}",
+" {background <rgbcolor>}",
+" {size <XX>,<YY>} {anchor|scroll}",
+"", +" This terminal processes labels and other text using enhanced formatting",
+" by default. See `enhanced`.",
+"",
+" The width of all lines in the plot can be modified by the factor <lw>",
+" specified in `linewidth`. The font size can similarly be uniformly modified",
+" the scale factor provided by `fontscale`. For discussion of font and text",
+" encoding options, see the `pdfcairo` terminal."
+"",
+" The option `rounded` sets line caps and line joins to be rounded;",
+" `butt` is the default, producing butt caps and mitered joins.",
+"",
+" The size of the plot is given in screen pixels. By default each plot is",
+" drawn starting at the current cursor position and scrolls with the terminal",
+" text. `anchor` instead pins each plot to the top left of the terminal window.",
+" This is useful for animation or pseudo-mousing using the keyboard",
+" (see `pseudo-mousing`).", 5.4.8がでました.5.4.7でバージョン番号の扱いに誤りがあってその修正だけです. [0:26+2/3]の範囲で
- 0.4 * x + 48
と
64-x
で囲まれた領域を描画したいです。
plot sample [0:26+2/3] 64 - x with filledcurves above - 0.4 * x + 48 fc "yellow" notitle
と入力すると、
unexpected or unrecognized token: -
というエラーが出てきます。どのへんがおかしいでしょうか >>933
>unexpected or unrecognized token: -
なんてでないよ >934
そうですか。私の環境のせいかもしれませんので、少し調べてみます。
ありがとうございました。 うちの環境は同じメッセージでたよ
aboveと0.4の間のマイナスのとこだって plot [0:26+2/3] 64-x with filledcurves x1 fc "yellow" notitle, - 0.4 * x + 48 with filledcurves x1 lc "white" notitle
とかかな? gnuplot-6.0.0 が2023の12月末にでています 今日は買い時じゃないか
IDなしだから
昨シーズン運が良かったんじゃないのにあかんのに
よくそんな意味でのコメント ありゃ最低や >>938
multiplotの各プロットでreplotとかできるらしいのは良さげ。
ただTcl/TkとかでGUI作ってそっちにplotした方が柔軟性はある。x11限定だけど。
x11以外にもそういうこと(出力先を別アプリのウィンドウにする)できるのあるのかなぁ。 6.0.0のWindowsバイナリがリリースされました レス数が900を超えています。1000を超えると表示できなくなるよ。