ページが長いので「しおり」の仕組みを用意してみました。
「しおり用」と書かれた所をクリックしてからブックマークに入れると、
それはページの先頭ではなく、その箇所へのブックマークになります。
(03/03 2006)
前回の報告 (01/22 2012)以後、 現在の CVS 版に入れられた主な機能について紹介します (ChangeLog, manual の更新部分等より)。
かなり報告があいてしまったので、この間に色々な改良がなされています。 この間の一番大きな話題は、もちろん 4.6.0 のリリース (03/11) ですが、 その公開に向けた修正などが多く行われ、 4.6.0 のリリース後は少し一休みといった感じで しばらくはたいした更新はありませんでした。 4 月位からまた少しずつ新しい改良などが行われているような感じで、 RGB に Alpha 値の追加 (出力形式依存)、 emacs での gnuplot-mode の利用を改善する仕組み、 set style circle の新しい {no}wedges オプション、 などが追加されているようです。
「with labels の追加列を pointsize として」 というのは少し意味がわかりませんが、 時間のあるときに試してみて、面白そうならばまた報告したいと思います。
with labels で現在はデータ内の文字列もグラフ上に描画できます。 日本語の出力もできますし、フォント指定も set label 同様に行えます。 しかし、具体的なデータで試してみたところ、 一つ気がつきました (x11, gif terminal、日本語は EUC-JP)。
1 1 ほげというデータを
2 2 "ふが"
1 2 hoge
2 1 "fuga"
using 1:2:3 w labels font "[適当な日本語フォント]"
で表示させると、hoge, fuga の方はどちらも出ますが、
日本語の方は「ふが」は出て「ほげ」は出ません。これは、
「情報やメモ (01/29 2008)」
でも書いていますが、日本語文字列を引用符で囲んでいないためのようです。
英文の方はちゃんと出るのですが、日本語の方は出ないので気がつきにくいですね。
しかしこれも、以下のようにすれば、引用符なしでもちゃんとでるようです。
using 1:2:(strcol(3)) w labels font "[適当な日本語フォント]"
なお、いくつかのバージョンで試してみると、 gnuplot-4.4.X (X=0,1,3,4) でも 1:2:3 で引用符なしの日本語が出るものもあれば (X=1,4)、 出ないものもあり (X=0,3)、 開発版でも出るもの (2011 11/29 以前) も出ないもの (2011 12/08 以降) もあるようで、どういうことなのかよくわかりませんが、 日本語は引用符がないと、または strcol() を使わないと正しくは出ない、 と思っておいた方がいいかもしれません。
MS-Windows 上の wgnuplot でも、 バイナリによって出たり出なかったりするようなので、 やはり正しくは出ないと思っておいた方がよさそうです。
ついに gnuplot-4.6.0 が出ました。 NEWS は、4.6rc1 のものから変わっていませんので、 4.4 からの変更点については、 「情報やメモ (01/22 2012; no.2)」 を参照してください。
2 ちゃんねるの掲示板「gnuplot を使おう。その 3」(アドレスは リンクリスト 参照) に書かれた情報について、多少気になるものがありましたので、 少し書いておきます。
相当な超絶技巧 (力技) を駆使して 色んなグラフを書く方法を紹介しているサイトが紹介されていました (31)。
gnuplot Q&A 掲示板 でも紹介されていましたが (2572)、 新しい gnuplot の機能、中にはシェルスクリプトや AWK などを使って、 相当にすごいことを行っています。
なお、このサイトの画像はほとんど PNG で、 また javascript でサイドバーを使っているので、 PNG が表示できず javascript も使えないような古いブラウザを 普段使っている私には、 最初何がすごいんだか全くわかりませんでした (^^;
スクリプトファイル (コマンドライン指定) の中から、 スクリプトファイル名自身を取得できないか、という質問がありました (35)。
回答はついていませんでしたが、 確かにそれは今の gnuplot ではできません。 call コマンドでスクリプトを呼び出した場合も、 C 言語などとは違って $0 は 1 つ目の引数になってしまうので、 スクリプト名を取得することができません。
ただ、これはできると便利かもしれないので、 GPVAL_SCRIPT などに現在のスクリプトファイル名を保存するような パッチでも作って、本家に送ってみたいと思います。
グラフを 4:3 にするには、という質問がありました (40)。
質問には「軸を 4:3 にしても、y2label、y2tics などによって 画像として 4:3 でもグラフが 4:3 じゃなくなる」 といった形に書かれています。つまり、4:3 にしたいのは、 画像全体の大きさではなくてグラフ部分のことのようです。
画像を加工したら、とか set term の size オプションの回答がついていましたが、 以前の gnuplot では、このようなサイズ指定の意味については やや terminal 毎に曖昧なところ、不統一なところがありましたが、 現在 (gnuplot 4.4 以降) は、ほぼ以下のような仕組みに統一されています。
よって、set term での指定ではキャンバスは 4:3 になっても グラフが 4:3 になるとは限りません。以下は、いずれも 「set size 1,1」(描画領域 = キャンバスサイズ) の場合の例です。
xrange は [-4:4]、yrange は [-2:2] にしているので、 グラフ部分が正しく縦横が 1:2 ならば点線の格子が正方形になるはずですが、 正方形ではなく長方形になっているのがわかるでしょうか。 このように、set size XX,YY は軸の label など含んだ領域の指定なので、 これでは「グラフ部分」の比を固定することはできません。
一方で、「set size ratio <r>」の r は 「グラフ部分」のアスペクト比 (横に対する縦の比) の指定なので、 これを指定すればグラフ部分の比を設定できます。 以下はいずれも「set size ratio 0.5 1,1」の例です。
グラフ部分の大きさは違いますが、いずれも正しく縦:横が 1:2、 すなわち格子が正方形になっていることがわかるでしょうか。 なお、「set size ratio 0.5 1,1」は「set size ratio 0.5」 と書いても同じですが (デフォルトは 1,1 なので)、 ratio 指定と XX, YY の両方を指定すると、 その XX, YY の範囲内で ratio 指定が実現されます。
軸の目盛りの単位の比を揃えたい場合には、ratio で負の値を指定します。 詳しくはマニュアルを参照してください。
set {b,l,r,t}margin は、グラフ領域とキャンバスの外枠との余白を 調整します。これを適切に設定することでも グラフ部分の大きさを調整することは可能ですが、 デフォルトの単位は文字の大きさで、これは縦と横の比が違いますので、 注意が必要です。
データを左から見ると 0.001 位のものが 1.0 くらいにあがって、 そこで急に -1.0 に落ちる、というデータになっている。 その 1.0 と -1.0 をつなぐ線を消して、 そこで切れているようなグラフを書きたいのだが、 という質問がありました (44)。
それに対して、2 本に分けて描いたらどうかという回答と、 3 項演算子を使って場合分けする例を 1/x に対して示した回答がありましたが、 質問者は、分けるのは面倒で効率が悪い、 場合分けは関数ではないので無理、というコメントをしていました。 また、データによっては 1 から -1 まで大きく下がる点と、 0.05 から -0.05 に下がる (これは普通に下がっているので切りたくない ?) 点もあるということのようでした。
データでも 3 項演算子で場合分けは可能ですよ、 という回答もありましたが、 グラフを切りたい場合はそこに空行を入れればいいだけなので、 gnuplot でやるよりは AWK などでデータの切りたい部分に空行を入れる加工をする方が 多分楽だと思います。 特に、切るための条件が複雑ならば (質問者の感覚的なものがありそう) gnuplot の外でデータを加工すべきだと思います。
gnuplot だけでもできなくはないですが、 多分新しい gnuplot だと 「情報やメモ (05/28 2009)」 に書いた、カンマ演算子と lc variable を組み合わせる方法が 一番楽でしょうか。 簡単のため、0.5 以上から -0.5 以下まで飛んでいるものだけ切る、 という条件であれば、以下のようになります。
y = 0
plot '-' using 1:2:(y0=y,y=$2,(y0>=0.5 && y<=-0.5)?-2:3) w l lc variable
1 0.1
2 0.7
3 -0.6
4 0.5
5 -0.4
6 0.1
7 0.2
8 0.4
9 -1.3
10 -0.8
e
前のデータを y に保存しておいて、y0 = 前のデータ、y = 今のデータとして、 条件を満たす場合は線種を -2 にしています。 x=2 から x=3 のところは 0.7 から -0.6 に落ちるので切れていますが、 x=4 から x=5 のところ、x=8 から x=9 のところは条件を満たしていないので 切れていません。
sin のグラフの x 軸の目盛りにπを入れる方法は、 という質問がありました (49)。
tutorial.pdf に書かれている LaTeX terminal の例が紹介され、 enhanced を使えば EMF でもできるといったものが紹介されていました。 具体的には、enhanced を使って xtics に明示的に ギリシャ文字を Symbol フォントで出すという方法のようですが、 日本語でもいいなら、以下のような方法もあります。
set xtics 0.5*pi font "[日本語フォント]"
set format x "%.1Pπ"
set xrange [-0.5*pi:2.5*pi]
つまり、目盛りは π/2 刻みにして、 πは set format の方に書いてしまう方法です。 これだと set xtics で明示的に一つ一つ書く必要はありません (「π/2」のようにはできませんが)。
gnuplot-4.6.rc1 が出ました。 配布物に含まれる NEWS には、以下のように書かれています。
現在 (01/22 2012) の CVS 版のほぼ全部の機能が入っている感じで かなり大きな改訂になりますが、 4.6.0 のリリース版も機能にほとんど違いはないだろうと思いますので、 かなり楽しみですね。
(cf. 「情報やメモ (03/11 2012)」)
前回の報告 (12/08 2011)以後、 現在の CVS 版に入れられた主な機能について紹介します (ChangeLog, manual の更新部分等より)。
また少し報告の間があいてしまいましたので、かなりいろいろありますが、 主なものは以下のような感じでしょうか。
今回は、特に Qt terminal に関する改良がかなり行われています。 現在は、x11 terminal における gnuplot_x11 のように gnuplot_qt という外部ドライバを起動するようになりました。 ただ、うちの環境ではそのせいか、qt terminal は最初の起動の際には失敗して、 replot するとうまく立ち上がる、 といったようなことが起きていますが、 問題がクリアになったらまた報告してみたいと思います。
初期化ファイルの読み込みの仕組みも多少変更になりましたが、 そのサンプルが、share/colors_default.gp, share/colors_mono.gp, share/colors_podo.gp, share/gnuplotrc として付属しています。 いずれも set linetype を用いてユーザが線種を定義するサンプルになっていて、 これを使えば (RGB 色をサポートする出力形式に関しては) 出力形式によらず同じ系列の色が使えるようになっています。
(cf. 「情報やメモ (05/01 2012)」)