ページが長いので「しおり」の仕組みを用意してみました。
「しおり用」と書かれた所をクリックしてからブックマークに入れると、
それはページの先頭ではなく、その箇所へのブックマークになります。
(03/03 2006)
今までちゃんと説明していませんでしたが、
ここには、日付ごとに記事 (記事 A とします) を書いていますが、
その最後に、(cf. 「情報やメモ (XX/XX 20XX)」)
のように別な日付の記事 (記事 B とします)
へのリンクがついているものがあります。
これは、「被参照リンク」で、
記事 B が記事 A を参照している (リンクを貼っている) ことを意味します。
つまり、記事 B の方が記事 A より後の記事であり、
記事 A の続きや追加情報、訂正などの内容であったり、
記事 A に関連する別な話題であったりしますので、
記事 A に被参照リンクがついている場合は、
是非そちら (記事 B) もご覧ください。
(01/29 2014)
最新の開発版 (git) の all.dem の出力を置いておきます。
「情報やメモ (11/29 2023)」 の時点のデモ (783) と比べると、以下が追加、削除されています。
stringvar.dem はなくなったわけではなく、 all.dem でコメントアウトされて load されなくなっただけです。 この stringvar.dem の後半部分が、新規の extra_points.dem で紹介されている "with marks" で置き換わるものなので、 入れ替えられたのだと思います。 なお、fs_empty.dem は実は今年 2 月位には取り入れられていたものです。
「情報やメモ (11/29 2023)」 からの改変には、以下のようなものがありますが、抜けもだいぶあると思います (報告を長いことサボっていてすみません)。
このうち、1. は、例えば
plot FOO using (strcol(1) eq "ABC" ? $2 : NaN):3 with linespoints
のように using 内の条件式で不要な行を読み捨てていたものを、
よりわかりやすく
plot FOO using 2:3 with linespoints if (strcol(1) eq "ABC")
のようにできるようにした、というものです。
2. は、plot for などで利用でき、例えば以下のような例が載っています:
Array animals = ["dog", "cat", "mouse",
"llama"]
do for [creature in animals] {
INFILE = creature.".dat"
OUTFILE = creature.".pdf"
plot INFILE with boxes title creature
}
配列の添字を for の変数にしても同様の事はできますが、
配列の要素そのもの (文字列でもよい) を使える方が楽な場合もあります。
5. が多分最近一番の目玉だと思いますが、 まだドキュメントやデモがそろっていません。 これは、記号オブジェクトを自分で定義し、 それを object や point のように使用する、というものです。 これまでも、ユニコード文字を記号の代わりに使うことができたりしましたが、 ユニコードにない記号を定義してグラフに利用することができるようになるようです。 詳しいことがわかったらまた紹介しますが、 上の all-current-20240823.pdf の 681 ページの追加分がその一つのデモになっています。 それに見られる□や○、△、☆(の逆) の記号はいずれもそのデモファイル extra_points.dem 内で定義されたものです。
以前考えた「帯グラフ」(積み上げ型ヒストグラムに対応する斜め線をつけたもの) について、新しい書き方について紹介します (cf. 「情報やメモ (12/03 2005; no.3)」, 「情報やメモ (02/07 2015)」)。
2005-12-03 のサンプルでは、AWK スクリプトを使用して データの方を加工して、それを gnuplot に食わせる方法を紹介しました。
2015-02-07 のサンプルでは、積み上げ型ヒストグラム (with hist)、 ラベル (with labels) で 90度回転した帯グラフとその中の文字列を描き、 set object と with labels で回転した key を自作し、 さらに with lines (or with vectors) で対応するヒストグラフ同士を結ぶ 破線を作成しました。
この 2015-02-07 の方法では、前半部分は比較的容易にできるのですが、 それに比べて対応するヒストグラムのグループ同士を結ぶ破線の作成が かなり難しい方法しかできませんでした。
それに対し、「情報やメモ (09/29 2023)」 で報告していましたが、 Ethan さんからそれは開発版 (6.1) で実装されている with hsteps を使えば可能、というアナウンスを 2023-09-17 に頂いていたのですが、 それをまだ試していませんでした。 それを今回やってみたので紹介します。 サンプルは、2015-02-07 のものを利用します。すなわち、データは
年号 第一次産業 第二次産業 第三次産業 1920 54.9 20.9 24.2 1940 44.6 26.2 29.2 1960 32.7 29.1 38.2 1980 10.9 33.6 55.4 2000 5.1 29.8 65.1で、接続線以外は以下で作成できます。
set term wxt size 480,640 stats 'datafile' using 1 nooutput N = STATS_records M = STATS_columns bw = 0.5 # 棒グラフの幅 set boxwidth bw set style histogram rowstacked set style fill solid 0.5 border lc black set xrange [-1.5:N+1] set yrange [0:100] unset key set grid lc black lt 1 # ラベル set xtics rotate by 90 offset 0,-2 set ytics rotate by 90 offset 0,0.5 set lmargin 12 set bmargin 5 set label "産業別就業者数(15歳以上)の構成率の変化" \ at screen 0.05, screen 0.2 rotate by 90 font ",17" set label "(%)" at screen 0.1, screen 0.53 rotate by 90 set label " (年)" at screen 0.5, screen 0.01 rotate by 90 # colsum(n) = column(2) から column(n) までの和 colsum(n) = sum [i=2:n] column(i) # 自作の key のサンプル長方形の描画 ep = 0.1 set for [j=1:M-1] object rectangle \ from (-1.5+0.5*j-ep),78 to (-1.5+0.5*j+ep),82 fc lt j \ fs solid 0.5 border lc black # 棒グラフとグラフ内の文字列と自作の key の見出し文字列の描画 plot for [k=2:M] 'datafile' using k:xtic(1) with hist,\ for [k=2:M] '' \ using 0:(colsum(k)-column(k)/2.0):(sprintf("%.1f%%",column(k))) \ not with labels rotate by 90,\ for [k=2:M] '' \ every ::0::0 using (-2+0.5*k):(90):(strcol(k)) with labels rotate by 90
なお、colsum ($2 から $n までの和) の定義は、 以前は 3 項演算子による再帰的な方法で書いていましたが、 現在は sum で代用できるのでそれに書き直しています。 修正はその程度です。
さて、問題の接続線ですが、with hsteps では、単なる階段関数だけでなく、 階段関数の階段部分の幅を固定して、 階段同士をつなぐ斜め線が描けるようになっています。よって、 hsteps の幅をヒストグラムの箱の幅 (bw) に固定して、 with hsteps link による描画を追加するだけで接続線が描けます。 実際には、「with hist,\」の次に次の行を入れるだけです。
for [k=2:M] '' using 0:(colsum(k)):(bw) with hsteps link lc black dt 2,\
追加行の意味は容易だと思いますが、「lc black dt 2」は破線指定です。 これで、確かに Ethan さんの言う通り、 ものすごく簡単に接続線が描けるようになりました。
2024-05-29 頃にリリース版の 6.0.1 が出ていました。 6.0.1 での変更、修正は以下のようです。
今回は新規機能の追加はなく、変更と修正だけです。 6.0 が出たばかりなのでまだ安定しないのか、かなり修正が入っています。
gnuplot-6.0.0 の Windows 用バイナリがようやく本家 (http://www.gnuplot.info) で公開されました。ということで、 「情報やメモ (01/19 2024)」 に置いていた野良ビルド版は削除します。 本家の正式なものをご利用ください。
gnuplot-6.0.0 の Windows 用バイナリがまだ本家 (http://www.gnuplot.info) では公開されていませんので、野良ビルド版を置いておきます。
なお、野良ビルドなので 動作保証はありません。自己責任でご利用ください。 本家で正式な Windows バイナリが公開されたら削除する予定です。
一応 cairo, wxt, webp, caca, lua なども使えるようにしてあります。 なお、zip 版でなく、inno setup によるインストーラ版も作れるのですが、 野良ビルドだとやや危険ですし、 うちではその野良ビルドしたインストーラ版でインストールしてみたら、 最後のスタートメニューへの登録のところでセキュリティソフト (Norton) に怒られてしまうものしかできませんでしたので、 インストーラ版は置きません。
ちなみに、今の Makefile はよくできていて、 msys2-mingw64 があれば比較的容易にビルドは可能です。 ただ、今回 6.0.0 のビルドをしてみたところ、 いくつか気がついたところがありますので、 それを以下に書き留めておきます。
作業は展開したディレクトリ gnuplot-6.0.0 の中の config/mingw/ で行いますが、 そこの Makefile はそのまま使用するとうまくいかず、 いくつか修正が必要です。
1. は、これが有効になってないと、git 版とみなされて git 版用の作業を行おうとしてエラーになります。
2. は、ソースの依存関係が少しうまくいってなくて、 これを有効にしないと src/filters.c で使われている bisect_hit() (src/watch.c で定義されている) が参照できないというエラーがでます。
3. は、gnuplot.pdf の作成の途中で、gnuplot が plotstyles.gnu を実行する際に pdfcairo terminal を使用するので、 有効にしないとそこでエラーができます。 または gnuplot.pdf を作成しないようにスキップするという手もあります。
4. も同様で、plotstyles.gnu の実行時に、 filetype=png というバイナリファイルの読み込みのために gdlib を必要とします (多分全部を有効にする必要はないと思います)。
5. は、make install か make zip か make installer の際に、 必要な DLL ファイルをコピーするためには必要です。 そうしないと .dll ファイルをコピーしないので、 必要な .dll がある場所にパスを通す必要があります。
msys2-mingw64 環境の他に、上でも指定したライブラリ等が必要です。 現在は、pacman で導入できるものが多く、かなり楽です。 今回新たに追加された webp 出力形式についても、 「packman -S mingw64/mingw-w64-x86_64-libwebp」 で簡単にインストールできます。
また、gnuplot.pdf 等を作成するためには、 LaTeX 等の環境 (pdflatex, ps2pdf)、および picins.sty が必要です。 うちは、TeXLive が入れてあったのですが、 msys2-mingw64 環境からは LaTeX 環境が使えるようにはしてなかったので、 一旦 make が止まったところで、 TeXLive でその LaTeX ファイル等のコンパイルを、 Makefile を見ながら手動で行いましたが、ちょっと面倒でした。
展開したトップディレクトリにある FAQ.pdf も config/mingw/ に置く必要があるようです。でないと install 時にエラーとなります。
ちょっと手間はかかりましたが、 これでも昔に比べればかなりうまく自動的に進んでくれて だいぶ楽だと思います。
gnuplot-6.0.0 のリリースノート (RELEASE_NOTS) の、 バージョン 6.0 での変更や新しい機能等に対する紹介部分の和訳を 以下に紹介します。
===== ここから =====かなり大量にあることがわかります。 すでに git 開発版について紹介したものもありますが、 私もすべて試しているわけではありませんので、 便利な機能については、使ったときにでも少しずつ紹介できればと思います。
2023-12-29 頃に、ついに gnuplot-6.0.0 がリリースされました。 まだ Windows バイナリは置いてないようですが、 ソースアーカイブが置かれていますので、 開発環境があればビルドできます。
いつもなら NEWS ファイルに書かれている、 前のバージョンからの更新情報を和訳したものを紹介するのですが、 今回の 6.0.0 の NEWS ファイルでは、
Too many changes between version 5 and version 6 to list here. See Release Notes.と書かれていますので、 後で RELEASE_NOTS の該当部分の和訳を紹介したいと思いますが、 結構大量なので、もうしばらくお待ちください。
とりあえず、6.0.0 の all.dem の出力を置いておきます。
前回の 5.4.7 用のもの (「情報やメモ (05/24 2023)」) と比較すると、以下のようになっています。
なお、削除されたものは、単に demo から外されたというだけで、 その機能そのものがなくなったというわけではありません。
変更が大量すぎて、個々の画像に関する詳しい説明はできませんが、 上の一覧を見ただけでも、特に実質的に新規に追加されたデモファイルが 33 ファイルあることからも、 かなり多くの新しい機能が追加されていることがわかると思います。