ページが長いので「しおり」の仕組みを用意してみました。
「しおり用」と書かれた所をクリックしてからブックマークに入れると、
それはページの先頭ではなく、その箇所へのブックマークになります。
(03/03 2006)
今までちゃんと説明していませんでしたが、
ここには、日付ごとに記事 (記事 A とします) を書いていますが、
その最後に、(cf. 「情報やメモ (XX/XX 20XX)」)
のように別な日付の記事 (記事 B とします)
へのリンクがついているものがあります。
これは、「被参照リンク」で、
記事 B が記事 A を参照している (リンクを貼っている) ことを意味します。
つまり、記事 B の方が記事 A より後の記事であり、
記事 A の続きや追加情報、訂正などの内容であったり、
記事 A に関連する別な話題であったりしますので、
記事 A に被参照リンクがついている場合は、
是非そちら (記事 B) もご覧ください。
(01/29 2014)
12/01 頃に gnuplot-5.4.1 が公開されました。 5.4.1 での新規機能、変更、修正は以下のようです。
結局 5.4.0 の Windows バイナリは出ないままでしたが、 5.4.1 のソースを見たところ、 特に Windows 用のコードの変更はないようなので、 5.4.X の Windows バイナリがいつ出るかは予想できません。 またそのうちに野良ビルドを置いておこうと思います。
all.dem は、一つ追加されただけで、 「情報やメモ (07/21 2020)」 の 5.4.0 用の PDF ファイル all-540-20200721.pdf で言えば、202 ページの次に、202 ページと同じもの (dgrid3d splines) の、 dgrid3d Hann function のデモが追加されただけなので、 今回は all.dem の PDF 版は置かないことにします。
なお従来、all.dem の PDF 化は、
cd demo ;
../src/gnuplot -e 'set term pdfcairo' all.dem < /dev/null > all.pdf
のようにして簡単に作れたのですが、
今回 5.4.1 のもので同じことをしたら、
変なゴミ (gnuplot の table 出力) が混ざった
PDF ファイルができてしまいました。
良く調べると、demo/callargs.dem が set table
を使っていて、
そのためその table 出力がリダイレクトされてしまっているようです。
pdfcairo でなく epscairo 出力ではそのゴミが
PS ファイルの先頭についてしまって利用できなくなってしまいます。
all.dem の外からそれをオプションなどで制御することは無理そうなので、
callargs.dem の「set table
」を、
「set table "/dev/stderr"
」
などとすればいいようです。
最新の開発版 (git) の all.dem の出力を置いておきます。
最近、開発版に、外部ライブラリを使用した特殊関数が追加されました。 それは、数値計算ライブラリで有名な netlib (http://www.netlib.org/) に含まれる Amos (https://www.netlib.org/amos/) と呼ばれる複素引数ベッセル関数などのライブラリを使用したものです。
なお、netlib の元々の Amos ルーチンは Fortran ソースなのですが、 例えばそれを C で使えるようにした openspecfun ( https://github.com/JuliaMath/openspecfun/) をリンクすればほぼそれらの追加関数が使えるようになります。 ただし、oepnspecfun には複素指数積分ルーチン (cextint) が含まれないため、複素引数の指数積分 expint(n,z) だけは利用できません。
複素指数積分も利用できるようにするには、 標準では configure スクリプトは libamos というライブラリを参照しているようなのですが、 そういう名前のライブラリがどこに含まれているのかわからないので、 今のところその複素指数積分を有効にする方法がわかっていません。
上のデモでも、以前のデモ (「情報やメモ (05/28 2020)」) と比較すると、ほぼその追加関数の分が増えていて (493 ページから 515 ページ)、 それらは openspecfun ライブラリで出しています。 なお、上の all.dem には含まれていませんが、 demo/special_functions.dem を実行すると、 それらの特殊関数のデモがすべて実行されますが、 そのうち、expint.dem の 2 つ目の複素指数積分のデモは出せていません。
(cf. 「情報やメモ (02/01 2021)」)
「情報やメモ (08/26 2020)」, 「情報やメモ (08/27 2020)」, 「情報やメモ (09/08 2020)」 に書いた、5.4.0 の Windows 版が出てこない件ですが、 以下の src/win/wgraph.c への差分でほぼ改善するようです。
結果的に wgraph.c への差分なので、 直接 Direct2D のルーチンに問題があったわけではないのですが、 wgraph.c の中に元々不正な値で計算をしていた部分が何箇所かあって、 それが Direct2D を使うルーチンの場合には過敏に反応してクラッシュしたり 不正な値を保持したりしていたようですが、 古い GDI+ 系のルーチンではライブラリでそのあたりの対応がなされているのか なぜか問題が起きなかったようです。
これでとりあえず Direct2D でも落ちないようになります。 なお、現在の win terminal では、 「set term win size [x],[y]
」は
グラフウィンドウの中のグラフ描画領域のサイズ (内部変数では Canvas)
を指定し、
「set term win wsize [x],[y]
」は
グラフウィンドウ自身のサイズ (内部変数では Size)
を意味することになっています。
ついでに、上のパッチから作った Windows バイナリ (野良ビルド) も下に置いておきます。
「情報やメモ (08/26 2020)」, 「情報やメモ (08/27 2020)」 に書いた、5.4.0 の Windows 版が出てこない件ですが、 調べてみると複数の問題があるようです。 set term win でサイズを指定しないとサイズが無茶苦茶な値になっていたり、 size を指定しても、wgnuplot.ini で保存させると不正な値が保存されたりします。
そして、少し調べてみたところ、 どうやら新しい Direct2D サポートの問題のような気がします。 実際、Direct2D の機能を切ると問題は起こらなくなります。 よって、とりあえずの回避策としては、以下のようにすればよさそうです。
これで次回からは問題なく set term win で正しいグラフが書けると思います。 ついでに、Direct2D を使わない Windows バイナリ (野良ビルド) も下に置いておきます。
(cf. 「情報やメモ (10/16 2020)」)
「情報やメモ (08/26 2020)」 に書いた、5.4.0 の Windows 版が出てこない件ですが、 5.4.0 のリリースアナウンスを見たら以下のように書いてありました。
そういうことだったのですね。 メーリングリストなどを眺めてみまいたが、 どれがその問題なのかはまだ見つけられていません。 まあしばらくは 5.4.1 が出るのを待って 5.2.8 を使うのがいいのかもしれません。 またはある種の問題が起きることを承知の上で、 「情報やメモ (08/26 2020)」 のバイナリを使うという手も一応はあります。Version 5.4.0 is the start of a new "major release" series. It supersedes version 5.2, first released in September 2017.
(日本語訳) バージョン 5.4.0 は、新しいメジャーリリース系の最初のもので、 2017 9 月に最初にリリースされた 5.2 系に代わるものです。I realize that there may be unresolved issues with building Windows binaries for Windows 10, but I decided that it is not reasonable to hold up release any longer for issues that appear to be more related to system configuration than to the gnuplot source. If necessary we can put out a Windows-specific patchlevel 1.
(日本語訳) なお、Windows 10 用の Windows バイナリのビルドで 未解決の問題があるようだということは知っているのですが、 gnuplot ソースよりもシステムの環境により依存して現れる問題のために これ以上リリースを遅らせることは良くないだろうと決めました。 必要ならば、Windows 用に patchlevel 1 を提示できますし。As always, I am totally reliant on and extremely grateful to the volunteers who put together Windows binaries from a source release package.
(日本語訳) 常にそうであるように、私はソースリリースパッケージから Windows バイナリを継続して作成するボランディアの方を すっかり当てにしていますし、とても感謝しています。
「情報やメモ (07/21 2020)」 で報告した通り、1 ヶ月以上前に gnuplot-5.4.0 がリリースされましたが、 理由はわかりませんが、その後 Windows 版が一向にリリースされていません。 後で本家にメールでも書いてみようかと思いますが、 せっかくなので、うちでもビルドしてみました。 参考にしたのは以下で、そこにある msys2-mingw64-gnuplot.txt に従って作業すれば、ほぼこれでビルドができます。
その顛末を少し書いておきます。
-gd
はなく、
「pacman -S mingw64/mingw-w64-x86_64-libgd
」とする。
pacman -S zip unzip
」
unzip libcerf-2.0.zip
」とすれば、
libcerf-2.0/ にソースが展開される。
pacman -S mingw64/mingw-w64-x86_64-cmake
export PATH="${PATH}:/mingw64/bin"
export PKG_CONFIG_PATH=/mingw64/lib/pkgconfig
なお、MSYS terminal 上では、パス内のディレクトリの区切りは、
Windows の \ ではなく、Unix 同様 / であることに注意
(ファイルのコピーも copy ではなく cp、
ファイルの削除は del ではなく rm)。
cd libcerf-2.0
mkdir build
cd build
cmake -G "MSYS Makefiles"
-DCMAKE_INSTALL_PREFIX=/c/msys64/mingw64 ..
make
make test
make install
cd ../..
cp /mingw64/lib/libcerf.dll /mingw64/bin
最後の libcerf.dll のコピー (cp) は、bin の方にないと
gnuplot の実行時に参照されない。
これで、libcerf のインストール作業は終わり。
gunzip -c gnuplot-5.4.0.tar.gz | tar xvf -
これは、例えばメモ帳 (notepad) 等で、 c:\msys64\home\UUUU\gnuplot-5.4.0\config\mingw\Makefile を開いて修正すればいいでしょう。
上のライブラリを全部使うものを作るなら、 NEWGD=1, JPEG=1, FREETYPE=1, CAIROTERMS=1, CAIROLIBS=1, WXT=1, QT=1, LUA=1, CACA=1 の行のコメント記号 (行頭の #) を削除すればいいです。 不要なライブラリがあれば、 それはコメントアウトしたままにしておけばいいですが、 QT=1 や CAIROLIBS=1, CAIROTERMS=1 をコメントアウトすると、 別の問題がでて、余計に Makefile などを修正する必要がありますので、 特に削らないといけない理由がなければ、 それらは生かすようにした方が楽です。
また、どこでもいいので (例えば 45 行目の RELEASE=1
の次の行に)、「DLLS=1
」を入れます。
これで、インストールなどの際に必要な dll ファイルが追加されます。
次に 1095 行付近の
「-cp -p $(TOP)/win/README-testing.txt $(DESTDIR)/
」
とその次の行は、それらのファイルがないために make が止まってしまうので、
コメントアウトします (行頭に # をつける)。
また、1100 行付近の demo/games も今はないので、
「mkdir -p $(DESTDIR)/demo
」
はそのまま残して、その下の
「-cp -p $(M)* $(DESTDIR)/demo/
」は -r を追加して、
「-cp -pr $(M)* $(DESTDIR)/demo/
」に変え、
その次の 2 行 (games に関する行) はコメントアウトします。
また、1105 行付近の pdf ファイルも、
自前でコンパイルまではせずにあるものを使えばいいので、
「-cp -p gnuplot.pdf $(DESTDIR)/docs/
」と、
その下の
「cp -p FAQ.pdf $(DESTDIR)/docs/FAQ.pdf
」を、それぞれ
「-cp -p $(D)gnuplot.pdf $(DESTDIR)/docs/
」
「cp -p $(TOP)/FAQ.pdf $(DESTDIR)/docs/FAQ.pdf
」
に変えて、既に存在するものをコピーする形にします。
1110 行付近の ps_guide.pdf, ps_sysmbols.ps, ps_symbols.pdf, ps_fontfile_doc.pdf をコピーする行もコメントアウトします。
make all
make install
make all の方は、pdflatex がないからエラー、 みたいな行で止まると思います (別の箇所かもしれません)。
make install は C:\Proguram Files\gnuplot にインストールするので、 そこに書き込み権限がないとインストールできないかもしれません。 インストールが済めば、 C:\Proguram Files\gnuplot\bin にパスを通せば使えるようになると思います (多分。うちは make zip していて、make install はしていない)。
make zip で gnuplot 一式の zip アーカイブを作ったり、 Inno Setup ( http://www.jrsoftware.org/isdl.php) があれば make installer で gnuplot のインストーラを作ることもできます。 make install に失敗する場合は、インストーラを作って それでインストールするという手もあるかと思います。
以下に、うちの Windows 10 で make zip した (msys2-mingw64 版の) zip アーカイブを置いておきます。インストーラではありませんが、 展開してその中の gnuplot\bin にパスを通せば使えます。
野良ビルドなので動作保証はありませんが、
一応デモは動きました。
ただし、windows terminal は「set term win size 640,400
」
のようにサイズを指定して明示してやらないと不安定かもしれません。
なお、gnuplot のデモですが、
「情報やメモ (05/09 2018)」
に書いた、demo/all.dem を自動的に全部実行させるための
「echo. |
」を利用する方法は、最近うちの Windows (10)
ではうまくいかないようです。
gawk の空行出力をパイプ入力させるのが筋なようです。
(cf. 「情報やメモ (08/27 2020)」, 「情報やメモ (09/08 2020)」, 「情報やメモ (10/16 2020)」)
07/16 頃に gnuplot-5.4.0 が公開されました。 5.4.0 での新規機能、変更、修正は以下のようです。
開発版 5.3 で導入されていた多くの新機能が取り込まれましたが、 逆に古い terminal は、 デフォルトでは使えないようになったものもいくつかあります (linux, vgagl, latex, emtex, eepic, tpic, tgif) し、 古いコマンドで使えなくなったものもあります。 この version 5.4.0 の all.dem の出力を、以下に置いておきますが、 これを他の版のもの、git 版などと比較すると違いがわかりやすいかもしれません。
最新の開発版 (git) の all.dem の出力を置いておきます。
前回 (「情報やメモ (04/27 2020)」) と 違うのは、わずかに 700 ページ目の下と上に カラーボックスがついたことくらいでしょうか。 これは、「情報やメモ (01/21 2020)」 で紹介した「set palette save」が、 名前を変えて「set colormap」となったのですが、 その新しい機能を作って作られたカラーボックスです。
set palette save では、個別のパレット (配列) に、 どう z の範囲を割り当てるかが問題となっていましたが、 それが set colormap で可能になり、 それに基づいて保存した新しいパレット (colormap) にカラーボックスを作れるようになりました。 詳しくは付属のドキュメントか、demo/named_palettes.dem をご覧ください。
(cf. 「情報やメモ (11/04 2020)」)
最新の開発版 (git) の all.dem の出力を置いておきます。
document によれば、 plot の smooth オプションに「smooth path」なるものが新設されました。 これは、点の x 座標でのソートをせずに、点指定順に spline をかけるもので、 閉曲線やループを含むような曲線の平滑化に有用なもののようです。 上のデモで言えば、53, 54 ページのところに それに対応するデモが追加されています。
(cf. 「情報やメモ (05/28 2020)」)
最新の開発版 (git) の all.dem の出力を置いておきます。
最近追加された VP_fwhm を使うには新しい libcerf が必要と書きましたが (「情報やメモ (02/27 2020)」)、 正確には確認していませんが、 どうやら新しい libcerf なしでコンパイルできるように修正されたようです。
また、これもまだ確認していませんが、 以前、x11 terminal で pause mouse をスクリプトで使うとその付近のスクリプトの行頭文字が 消えて解釈されてしまう、という問題を報告しましたが (「情報やメモ (06/03 2018; no.2)」)、 その問題が解消されたかもしれません。 同様の問題が報告され、そしてそれに関する修正が入ったようです。 時間が取れたら、ちゃんと確認したいと思います。
また、ドキュメントでは reread は非推奨扱いになりました。 これは、現在の gnuplot は for/do/while 等のループ機能がそれなりに実装されていることで、 reread によるやや変則的なループが不要になったということでしょう。 今後はそちらをお使いください。
最新の開発版 (git) の all.dem の出力を置いておきます。
なお、前者は pdfcairo terminal の出力そのままで、 後者は epscairo terminal の出力を LaTeX で取り込んで小さくしたものです。 先月のもの (01/21 のもの) と見比べると、list の方での 9 ページ目の 6 つ目、先頭から言えば 486 番目のものあたりから 3 ページほどデモが追加されていることがわかります。 これは、libcerf を使った Voigt 関数、Voigt 分布のグラフです。 Voigt 関数自身はごく最近追加されたものではありませんが、 最近 Voigt FWHM (半値全幅) の関数 VP_fwhm(sigma,gamma) が追加されました。
なお、この VP_fwhm を使うには、 libcerf もそれなりに新しくしなければいけません。 古い libcerf (1.4 あたり) だと関数が足りませんので、 もう少し新しいものを使う必要がありました。
私は 1.13 を使いましたが、この 1.13 をインストールするには、 付属ドキュメントには configure & make と書かれているのですが、 これは古い記述で、実際には cmake が必要なようです。 展開したディレクトリで、以下のようにすればいいようです。
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=[インストール先]
make
make test
make install
それ以外には、palette(z)
という、
z の値から現在の cbrange とパレットに対応する、
色の RGB 表現を返す関数が追加されています。
それを利用した palette+alpha.dem というものも追加されているのですが、
これは all.dem には含まれていないので、上のサンプル内にはありません。
(cf. 「情報やメモ (03/26 2020)」)
最近、gnuplot の開発版のバージョンが 5.3 から 5.5 になりましたが、 「with polygons」、「set palette save」、「set pm3d clip z」 などの新しい機能も導入されています。
「with polygons」は、その名の通り多角形を描画する描画スタイルで、 3 次元空間内の多角形データを読み込んで、それを空間内に描画します。 これにより、空間の立体図形を描画することが可能になります。
多角形データは、3 次元座標である行が連続して並んだものを指し、 空行で分割されます。色を塗ったり、光源モデルを使ったりもできますし、 対話型出力形式の場合はマウスで回転すると、 色もそれに合わせて変化してくれます。 以下にサンプルがあります。
「set palette save」は、現在の palette を「名前付きカラーマップ」 と呼ばれる配列に保存する機能で、 現在の palette とは別に、事前に保存した「名前付きカラーマップ」 を指定してグラフの色付けをすることも可能なので、 実質的に一つの plot で複数のパレットを使用することができるようになります。
更に、「名前付きカラーマップ」は 32bit ARGB 形式の値を持つ配列なので、 その配列を直接操作してパレットを改変できるようになります。 例えば、マニュアルには以下のような例が載っています:
set palette defined (0 "dark-red", 1 "white" )
set palette save Reds
do for [i=1:|Reds|] { Reds[i] = Reds[i] | 0x3F000000 }
splot func(x,y) with pm3d fillcolor palette Reds
1 行目は暗い赤から白へのグラデーションとしてパレットを定義し、
2 行目はそれを Reds という名前付きカラーマップに保存し、
3 行目はそのカラーマップにアルファ値 (透過) を付加し (少し透明に)、
4 行目はそのカラーマップで関数のグラフを描画、としています。
「set pm3d clip z」は、zrange を使って 3 次元グラフのクリッピングを行うものです。 pm3d の 3 次元グラフは 4 辺形を基本として描画されるので、 pm3d での色付けを行うときは、 従来の「set pm3d clip4in」や「set pm3d clip1in」では 端がギザギザになる可能性があったようです。 それが、set pm3d clip z (現在の開発版のデフォルト) によって連続的に綺麗にクリッピングされるようになりました。 サンプルは以下にあります。
最新の開発版 (git) の all.dem の出力を置いておきます。
ページ数で言えば 2019-08-05 のもの (cf. 「情報やメモ (08/07 2019)」) と 2 ページしか違わないのですが、 内容は色々変わっています。 例えば、上で述べた新しい機能のデモも、685 ページから 696 ページ、 455 ページに含まれています。
ついでに、これらの違いがわかるように、各ページを小さくして、 1 ページに 60 ページ分を入れたものをそれぞれ作ってみました。
これを見ると、どの辺が抜かれて、どの辺が追加されたか多少見やすいでしょうか。
(cf. 「情報やメモ (05/28 2020)」)