ページが長いので「しおり」の仕組みを用意してみました。
「しおり用」と書かれた所をクリックしてからブックマークに入れると、
それはページの先頭ではなく、その箇所へのブックマークになります。
(03/03 2006)
- (12/10 2006)
(しおり用)
ふと、2ch (2ちゃんねる) に gnuplot に関する掲示板
があるのに気がつきました。
2001/10/07 開始で最近 1000 記事に達して、その 2 もできているようです
(gnuplot (shige) のページ
のリンクリストにも追加しておきました)。
有用な情報や、やや中途半端な情報など、色々なものがあるようですので、
暇なとき、気がついたときにでも、
ここに少しずつまとめてみましょうか。
- (11/26 2006; no.2)
(しおり用)
gnuplot Q&A 掲示板
での見聞き等で得た情報を備忘録として書いておきます。
-
MS-Windows 上の C# ではパイプをサポートしていないが、
その上で gnuplot を呼ぶにはどうすればいいか、という質問がありました。
それに対して、pgnuplot は MS-Windows の API を使って
パイプを実現してコマンドを流しこむものなので、
そのソースを参考にしたらどうか、という回答があり、
質問者からも、System.Diagnostics.Process クラスを用いて
pgnuplot 経由でコマンドを流し込むことができた、という報告がありました。
また、それに関連して、MS-Windows 上でコマンドプロンプトで入力を受けつけて
グラフをウィンドウで表示するような gnuplot はないですか、
という質問がありましたが、
これは cygwin 上の gnuplot がそれに該当するように思いますし、
確か Borland C++ で make した版の gnuplot はちょうど
そんなアプリケーションになったように記憶しています
(ただし現在は多分ほとんど保守されていないはず)。
(1417 の記事から始まるスレッド
「gnuplot を他のプログラムからパイプ以外で使うには」)
-
あるデータに対する x 軸の目盛りの見出しを、
実際のデータの x の値とは別のスケールで、
しかも右に行くほど小さくなるように表示するには、
という質問がありました。
これは、「データに適当な線形変換をかけて、xrange を逆向きに指定してやる」
というのが真っ当な方法だろうと思います。例えば、
1 10
2 20
3 30
というデータ (つまり、x 軸が 1 から 3 までのデータ) を、
グラフは変えずに、x 軸の目盛りを左端が 30 で右端が 10 になるようにする
(つまり、x' = 40-10*x のようにする) には、
plot [30:10] 'data' using (40-10*$1):2 title "'data'" w l
のようにすればできます。
または、x2 軸を使って、x2 軸をスケールを変え反転させた軸にして、
set x2range [30:10] ; set x2tics; unset xtics
plot 'data' w l
のようにする、あるいはその逆に、x2 軸で表示させ、
x 軸をスケールを変え反転させて、
set xrange [30:10]
plot 'data' axis x2y1 w l, 1/0 notilte
のようにする、という解もあります。ただし、x2 軸に表示させる場合は、
x 軸にも空のデータを表示させないと左右反転になってくれませんので、
上の例のように 1/0 みたいなものを余分につける必要があるようです。
(1418 の記事から始まるスレッド
「X 軸の目盛の変更方法」)
-
ラベルとして「約」を表わす記号 (「〜」を上下に 2 つ重ねた記号)
を使いたい、という質問がありました。
これは、gnuplot 4.X ならば、enhanced をサポートする terminal ならば
enhanced モードにして
set xlabel '{/Symbol \273}'
のようにして表示できます。
ただ、元記事の方は Mac だそうなので、
gnuplot-4.0 の PostScript ならだいじょうぶですが、
gnuplot-4.0 の aqua terminal だとだめです。
CVS 版、4.2.rcX 以降なら aqua terminal でも
enhanced text mode がサポートされています。
なお、273 という番号 (8 進数) と記号の対応表は、
gnuplot のソース配布物には docs/psdocs/ps_guide.ps として含まれていますし、
松岡さんもご自分の WWW ページで紹介されています
(cf.
http://www.nuce.nagoya-u.ac.jp/e8/Matsuoka/gnuplot_memo.html)。
(1432 の記事から始まるスレッド
「数学記号」)
- (11/26 2006)
(しおり用)
gnuplot 4.2.rc2 が出ました。
「情報やメモ (11/13 2006)」
にも書きましたが、現在の CVS 版は 4.3 というバージョン番号になりましたが、
これとは別ブランチで、4.2.rcX が更新されているようで、
現在の CVS 版 4.3 に新たに取り込まれた機能 (例えば透明化 fill)
は 4.2.rc2 には取り込まれてはおらず、
主に 4.2.rc1 以後のバグの修正等が行なわれているだけのようです。
ということは、マニュアルの日本語訳も、
別ブランチで作成しないといけないので、
4.2 の正式版がリリースされる前に準備しておかないといけないですね
(うーん)。
- (11/13 2006)
(しおり用)
前回の報告 (10/23 2006)以後、
現在の CVS 版に入れられた主な機能について紹介します
(ChangeLog, manual の更新部分等より)。
- 一般的な機能
- splot での長方形の配置に関する改良
- 目盛りのラベルの文字色処理に関するバグの修正
- key (凡例) のフォント指定が可能に
- データファイルの回転行列の初期化に関するバグの修正
- 描画の右マージンや配置がおかしくなる問題の修正
- set style fill に transparent 属性を導入
- set tics {front|back} の導入 (目盛を描画要素の手前/奥へ)
- save の出力の改良
- terminal ドライバ
- x11 terminal で、GNUPLOT_DRIVER_DIR が不正な場合に
gnuplot が落ちてしまう問題の修正
- x11 terminal で、gnuplot_x11 が見つからない場合の処理の改良
- -persist をつけた場合 wxt terminal では gnuplot が終了しない問題の改良
- その他
- CVS 版の version が 4.3 patch level 0 に修正
- デモ
- transparent{_solids}.dem の追加
CVS 版は、4.2rc1 が出たあとも更新されているので、
バージョン番号が 4.3 となることになりました。
ということは、4.2rc1 がそのまま 4.2 release となり、
4.2rc1 以後の追加は 4.2 release には取り込まれない、
ということになるかもしれません。
今回の改良の目玉は、なんといっても
set style fill の transparent 機能です。
開発者の一人である E.Merritt さんの WWW ページ:
で以前から紹介されていた透明化を含んだ塗りつぶし機能が
ついに CVS 版に取り込まれました。
transparent.dem はその WWW ページでも紹介されている描画を生成します
(UTF-8 で書かれているので注意) が、
transparent_solids.dem の方は、3D 曲面のさらにすごいデモになっています。
すべての出力形式でサポートされるわけではありませんが、
これでまた gnuplot の表現力がかなり増すように思います。
また、上記の WWW ページには、
前回の報告 (10/23 2006) にある
margin の設定の拡張による set view map のグラフと 2D グラフの
絶対的な配置に関するデモグラフの画像もあります。
set view map のグラフと 2D グラフを重ねたい、
という要請もよくあるようですのでこれも便利かもしれません。
なお、今回の「splot での長方形の配置に関する改良」というのも、
この処理と関係した改良のようです。
(cf. 「情報やメモ (11/26 2006)」,
「情報やメモ (01/08 2007)」)
- (10/23 2006; no.2)
(しおり用)
gnuplot Q&A 掲示板
での見聞き等で得た情報を備忘録として書いておきます。
-
Linux と MS-Windows の両方で共通の gnuplot スクリプトを利用している場合、
"set term x11" や "set term win" などを
環境に応じて切り替えられないか、という質問がありました。
これは、別の terminal に一旦切り替えてそこから元に戻すときに、
という場合にその必要があるんだそうですが、
それなら set term push, set term pop がまさにそのような目的で
gnuplot 4.0 から実装されています。
他にも、Unix 上では ~/.gnuplot に「OS=1」、
MS-Windows では GNUPLOT.INI に「OS=0」と書いておいて、
この変数を gnuplot スクリプト内で参照して
if (OS==0) ...
if (OS==1) ...
のようにするという手もあります。
gnuplot-4.1 以降なら文字列変数が使えますから、「OS="Linux"」
「OS="Windows"」などとすることもできます。
(1393 の記事から始まるスレッド
「set terminal の切り替え方法」)
-
データファイルを C 言語で出力して、
そのデータファイルにコメントなどとして文字列も書いておいて、
それを取得して gnuplot のグラフの凡例 (key) のタイトルとできないか、
という質問がありました。
パラメータを変更する場合に gnuplot のスクリプトを変えずに、
C のプログラムの方だけの修正でその凡例も変えたい、ということでした。
これは、CVS 版の gnuplot を使えばできるのですが、
C でデータを作っているなら、
いっそ gnuplot スクリプトもそのプログラム内で生成してしまう、
という手もあります。
なお、複数行に渡る plot 行を書く場合は
行末に '\' を書いて次の行に続けますが、
これは '\' に続く改行文字の意味をなくすためにしているので、
'\' の次にスペースなどを入れてはだめで、
すぐに改行しないといけません。
(1395 の記事から始まるスレッド
「plot の title、あるいは key にデータファイルの文字列を渡したい」)
-
3 次元グラフ (z=f(x,y)) の定義域を円の内部のような領域に
制限して描画するには、という質問がありました。それに対して、
- その領域外では
g(x,y)=(x*x+y*y<1)?f(x,y):1/0
のように未定義のような関数にしてしまう
- x,y で表示するのではなく、媒介変数モードを利用して、
splot u*cos(v), u*sin(v), f(u*cos(v), u*sin(v))
のように表示すると綺麗に表示できる
といった回答がありました。
(1398 の記事から始まるスレッド
「3 次元プロットの X-Y 定義域」)
-
1000 万以上のデータポイントをプロットすることは可能か、
という質問がありました。
可能かどうかはよくわかりませんが、
gnuplot はすべての点のプロットを作成した後で画面表示するので、
それだけの点数だと少なくともいつになっても表示が始まらない、
ということになるだろうと思います。
そもそもそれだけの点をプロットすると、
どんなに高解像度出力を行っても
一面にベッタリ点を塗ったようになってしまうと思いますから、
ある程度データを間引いて出力せざるを得ないのではないかと思います。
あるいはデータ点の密集の度合いを色で表現するとか、
何らかの別の工夫が必要になるのではないかと思います。
(1409 の記事から始まるスレッド
「プロット数制限について」)
-
副目盛りを任意の位置に指定したい、という質問がありました。
set mxtics の指定ではあまりたいした指定ができないのですが、
ということでした。
確かに set mxtics ではそうなのですが gnuplot-4.0 以降では
set xtics の level オプションを使うことで
副目盛も任意の位置に配置することができます
(help xtics 参照)。
(1411 の記事から始まるスレッド
「副目盛を任意の位置に振りたい」)
- (10/23 2006)
(しおり用)
前回の報告 (09/13 2006)以後、
現在の CVS 版に入れられた主な機能について紹介します
(ChangeLog, manual の更新部分等より)。
- 一般的な機能
- NaN 値の保存に関する部分の改良。
- plot/splot の iteration 機能の追加
({s}plot for [<var>=<start>:<end>{:<incr>}])。
- set {b,l,r,t}margin の描画領域に対する割合を指定する
screen オプションの追加。
- filledcurves の場合の空行の扱いの改良。
- 3D でのクリッピングの改良。
- with points でのデータ描画での描画色、
および with labels の文字色をファイルから取得する機能の追加
- 複数のデータファイルを指定した場合、
データが入力できないファイルがある場合の処理の改良。
- データから描画タイトルを取得する機能の改良。
- terminal ドライバ
- wxt terminal のウィンドウのリサイズ時の仕様の変更。
- svg terminal の UTF-8、及び &#AA; 形式の 16 進表記のサポート
(raw/escaped オプションの追加)。
- post terminal の点線の描画の改良。
- set term X を (set term x11 の代用として) 容認。
- post terminal の gamma 出力の修正。
- KDE 上での x11 terminal の改良。
- gd ドライバの '' 内での 8 進の \xxx 表記文字の扱いの修正。
- その他
- TeX がない system では gnuplot.cfg をインストールしないように修正。
- Alpha CPU 上での FPU に対するコンパイルオプション (-ieee 等) を追加。
- configure 終了時の表示の改良。
- デモ
- borders.dem の改良と all.dem への追加。
- rgb_variable.dem の修正。
- iterate.dem の追加。
- histograms.dem の修正。
- margins.dem の追加。
今月最初に gnuplot-4.2rc1 が出ました。
"rc" は、
Release Candidate で正式リリース直前の版でリリースの候補という
位置付けなのですが、まだ重要な機能が追加され続けています。
特に今回の大きな目玉は、4.2rc1 以降に追加された、
plot/splot の iteration 機能でしょう。
これは、簡単な for 文を plot/splot に実装することで、
複数のデータファイルや関数の描画を手軽に行える機能です。
サンプルとして、マニュアルに以下のような例が紹介されています。
file(n) = sprintf("dataset_%d.dat",n)
plot for [i=1:10] file(i) title sprintf("dataset %d",i)
今まではこれと同じことを行うには、
file(n) = sprintf("dataset_%d.dat",n)
plot file(1) title "dataset 1",\
file(2) title "dataset 2",\
....
file(10) title "dataset 10"
のように書くしかなかったわけですから、
これでその手のことがはるかに楽に行えるようになります。
(cf. 「情報やメモ (11/13 2006)」)
- (10/10 2006)
(しおり用)
「情報やメモ (10/01 2006)」
に、Solaris 9 では wxt terminal がうまく動くようにできていないと
書きましたが、
何とかそれが動くように gtk+-2.8 系や wxGTK-2.6.3 をインストールできました。
詳しくは以下を参照してください。
- (10/01 2006)
(しおり用)
「情報やメモ (09/23 2006)」
にも書きましたが、
gnuplot-4.0, gnuplot-4.1 (CVS 版) の UTF-8 対応について
少し調べてみましたので報告します。
ただし、これらはリンクしているライブラリにも依存したり、
日々更新されている CVS 版の日付にもよります。
うちで確認した CVS 版 gnuplot は、2006 09/16 版です。
また、MS-Windows 版は確認しておらず、
Unix 上のものだけです。
Unix も、ほぼ Solaris 9 上での確認ですが、
wxt terminal は、wxWidget を Solaris 上にはインストールに成功してない
(後で少し書きます) ので、wxt terminal のみ FreeBSD 5.4 上での確認です。
まず最初に、簡単に表にして結果を紹介し、詳しい説明は後で書きます。
調べた terminal は、png (gd), x11, post, pdf, wxt, tgif, latex です。
いずれもスクリプトファイルを EUC-JP, Shift_JIS, UTF-8 の漢字コードにして
食わせてみた結果です。
また、評価は私の個人的な意見ですので、
それほど客観的なものではないかもしれません。
|
png |
x11 |
post |
pdf |
wxt |
tgif |
latex |
gnuplot-4.0 |
EUC-JP |
□ |
× |
○ |
× |
− |
× |
○ |
Shift_JIS |
□ |
× |
○ |
× |
− |
× |
○ |
UTF-8 |
□ |
× |
○ |
× |
− |
× |
○ |
gnuplot-4.1 |
EUC-JP |
□ |
○ |
○ |
× |
○ |
□ |
○ |
Shift_JIS |
□ |
○ |
○ |
× |
○ |
△ |
○ |
UTF-8 |
□ |
○ |
○ |
× |
○ |
△ |
○ |
評価:
- ○: 対応
- □: 対応 (条件付き)
- △: 非対応 (出力らしきものは作れる)
- ×: 非対応 (出力不可能)
- −: その terminal は使えない
上の表の各欄の説明をします。
-
png (gd) terminal
まず、png (gd) terminal ですが、これは gd ライブラリ経由なので
gif terminal, jpeg terminal 共通です。
この場合、gd ライブラリが TrueType フォントを呼び出しますので、
それを利用すれば PNG で日本語が出力できます。
ただし、-DJISX0208 オプションでコンパイルした gd ライブラリを使う場合は、
EUC-JP, Shift_JIS の漢字コードのスクリプトは使えますが UTF-8 は使えません
(文字化けします)。
逆に、-DJISX0208 オプションなしでコンパイルした gd ライブラリを使う場合は、
UTF-8 の漢字コードのスクリプトは使えますが、EUC-JP, Shift_JIS は使えません
(文字化けします)。
また、日本語への対応状況は 4.0, 4.1 で特に違いはありませんが、
古い gd ライブラリを使用している場合は、
GDFONTPATH 指定がうまく効かない場合があります
(cf. 「情報やメモ (03/04 2005)」)
-
x11 terminal
x11 terminal では、4.0 では日本語表示はできませんが、
4.1 からは日本語表示ができるようになりました。
環境変数 LANG の設定で、EUC-JP, Shift_JIS, UTF-8 いずれでも表示できます。
X サーバが対応していれば、TrueType フォントでの表示も可能です。
フォント指定は、"mbfont:a14;k14" や
"mbfont:*-fixed-medium-r-normal--14-*"、
"mbfont:-sazanami-mincho-medium-i-normal-20-*"
のように X のフォント指定の前に mbfont をつけて指定しますが、
リソースでも指定可能です。
-
post terminal
PostScript 出力は、4.0 の頃から日本語 PS フォント名を指定するだけで
使えるようになっています。
うちの Ghostscript 7.07 では、
- EUC-JP の場合: *-EUC-H (* = Ryumin-Light, GothicBBB-Medium 等)
- Shift_JIS の場合: *-RKSJ-H
- UTF-8 の場合: *-UniJIS-UTF8-H
のようなフォント指定でちゃんと表示されます。
日本語対応は、4.0, 4.1 では特に違いはありませんが、
EUC-JP, Shift_JIS の場合は、日本語文字列中にスペースが入ると
そこが「・」となって表示されてしまっていたのですが、
UTF-8 の場合はそれがちゃんと空白になっていました。
-
pdf terminal
pdf terminal は PDFlib を使用していて、
PDFlib 自体は日本語を使うこともできるのですが、
残念ながら pdf terminal はそれには対応していません
(マルチバイト文字の出力の機能を使っていません)。
4.1 でも非対応です。
ただ、PDFlib の知識があれば、
日本語を使えるように terminal を改良することは
そう難しくはないような気はしますので、
PDFlib は日本語のマニュアルも公開されていますから
どなたかやりませんか ?
ただし、現在の pdf terminal はやや古い PDFlib の関数が使われているので、
その辺を読み変えないといけないようで、
新しめのマニュアルだけでは足りないかもしれません。
-
wxt terminal
wxt terminal は 4.1 から導入された wxWidget を利用する terminal で、
現在の CVS 版では、これが利用できる場合には
デフォルトの terminal になっています。
これは環境変数 LANG の設定に応じて、それに合ったコードのスクリプトなら
EUC-JP, Shift_JIS, UTF-8 いずれもちゃんと出ます。
デフォルトフォントの設定すら必要ありません。
フォントは fontconfig を利用していますので、
変更する場合は、fc-list で使用可能なフォントを調べて、
その名前 ("Sazanami Gothic" とか "IPAMincho" とか)
を指定して使用できます。
ただし wxt terminal は、
それが要求する pango, cairo, wxWidget のバージョンは
それぞれ cairo-0.9.0, pango-1.10.3, wxWidget-2.3.3 以上と
割と新しめのものなので、
システムにデフォルトで入っている gtk+-2.X などだと
これを満たしていない可能性があります。
実際、うちの Solaris 9 は満たしていないくて
今回は FreeBSD-5.4 で実験しましたが、
Solaris 9 にも試しに gtk+-2.8 系をコンパイル & インストール
してみたのですが、
Solaris 上ではどうも動作が安定せず、今のところうまく動くものは
できていません。
しかし、それを FreeBSD から xon で Solaris の kterm を立ち上げて
利用していみたらちゃんと使えたりしたので、
Solaris の X のサーバとの相性のような問題なのかもしれません。
-
tgif terminal
tgif terminal では、
gnuplot 4.0 では日本語を出力しようとしても、
フォントを指定してもうまくいかないバグがありましたが、
現在の gnuplot 4.1 ではそれはとりあえず解消されています
(cf.
「情報やメモ (11/29 2004)」,
「情報やメモ (12/10 2004)」)。
EUC-JP ではちゃんと Tgif 4.X (うちは 4.1.43) で表示できますが、
Shift_JIS, UTF-8 では、
フォント指定を色々やってもうまく表示できませんでした。
そもそも Tgif が UTF-8 の表示には対応していないようです。
ところが、今回初めて気がついたのですが、
この対応も実は問題があるようです。
gnuplot の tgif 出力で (EUC-JP)、
"Ryumin-Light-EUC-H" のようなフォントを指定してやると、
確かに Tgif 上ではちゃんと表示されるのですが、
それを EPS に変換したものは Ghostscript (7.07) が処理できませんでした。
調べてみると、
Tgif が生成する EPS ファイルのフォント指定が、
最後に "-8" のようなものがついたもの
(例えば "Ryumin-Light-EUC-H-8") になっていて、
それで gs がエラーを起こしているようです。
よって、それを以下のような awk スクリプトで変換してやると
とりあえずは gs が処理できるようになりました。
ただしこれでも完全とは言えず、
文字の位置がずれてしまっていたりしていますし、
本来は gnuplot の tgif terminal 側でちゃんとした 2 byte 文字対応をして、
ちゃんと tgif が処理できるようなものを
出力できるようにすべきだろうと思います
(どなたかやりませんか ?)。
また、現在の Tgif は、2 バイト文字と 1 バイト文字の混在ができないので、
その点も少し面倒です。
なお、Shift_JIS, UTF-8 の gnuplot スクリプトを食わせて
作成した Tgif ファイル (.obj) は、
Tgif では文字化けして表示できませんでしたが、
それを EPS に変換するだけならば、コマンドラインから
tgif -print -eps -stdout file.obj | awk -f tgifeps2eps.awk > file.eps
とすれば、Shift_JIS でも UTF-8 でも
一応それなりに gs でちゃんと表示できるようになります。
ただし、フォントは *-RKSJ-H や *-UniJIS-UTF8-H のようなものを
指定する必要があります
(もちろん、最初から post terminal を使う方が真っ当です)。
また、Shift_JIS の場合は別な注意も必要で、
2 byte 目の文字が特別な意味を持つ場合はうまくいかないことがありますので、
その場合は文字列を " (ダブルクォート) で囲む替わりに
' (シングルクォート) で囲むなどの対処を取る必要がある場合があります
-
latex terminal
latex terminal は、単にスクリプトに書かれた文字列を
makebox で囲んで出力するだけ (フォント指定は無視される) で、
EUC-JP, Shift_JIS, UTF-8、いずれの場合も
そのコードのまま出力されるだけですから、
そのコードの LaTeX ファイルを作る、という点では対応している、
と言えると思います。
これは、4.0, 4.1 に特に違いはありません。
(cf. 「情報やメモ (10/10 2006)」)
- (09/23 2006)
(しおり用)
wxt terminal のテストをするために、FreeBSD 5.4 (X.Org 6.8.2) のマシンに
gtk+-2.8.20, glib-2.8.6, cairo-1.0.2, pango-1.10.4, wxWidget (wxGTK) 2.6.3
を手動で入れて (ports だと、gnuplot-current が要求する cairo-0.9.0 以上、
pango-1.10.3 以上の条件を満たしません) コンパイルをしたのですが、
最初はうまく動きませんでしたが、
コンパイルオプションを手直しして動くようになりました。
FreeBSD 固有の問題のようですので、
以下を参照してください。
何もしなくてもちゃんと日本語も表示されるようで、
さすが現在の CVS 版のデフォルト terminal になっているだけのことは
ありそうです。
- 簡単なテスト:
- 与えたスクリプト:
set title "ABCDE 日本語"
set xlabel "ABCDE 日本語"
set ylabel "ABCDE 日本語"
plot sin(x)
- その wxt terminal の表示のスクリーンショット
- フォント指定や大きさなども変えた例:
- 与えたスクリプト:
set title "ABCDE 日本語"
font "Sazanami Gothic,20"
set xlabel "ABCDE 日本語" font "Marumoji,16"
set ylabel "ABCDE 日本語" font "IPAMincho,14"
set label "ABCDE 日本語" rotate by 60 font \
"Sazanami Mincho,24" tc lt 3
plot sin(x)
- その wxt terminal の表示のスクリーンショット
wxt terminal で指定できるフォントは fontconfig 管理下のものなので、
それは fc-list などのコマンドで確認できます。
ただ、しばらくは上記のように wxt が動く環境を用意するのに
多少手間がかかるように思います。
なお、現在の CVS 版の gnuplot-4.1 の、
主要ターミナル (X11,post,pdf,png/jpeg/gif,tgif,wxt 等) の
UTF-8 環境での日本語出力についてテストしています。
結果がまとまったらここで報告したいと思います。
(cf. 「情報やメモ (10/01 2006)」)
- (09/13 2006; no.2)
(しおり用)
gnuplot Q&A 掲示板
での見聞き等で得た情報を備忘録として書いておきます。
-
3D データ点数が少ない場合に、
pm3d でなめらかな図を書くために dgrid3d を使ったのですが、
あまり綺麗に繋がりません、という質問がありました。
dgrid3d はヘルプにも書いてありますが、
必ずしも補間をしているわけではないので、
そういう期待はあまりできません。
むしろ外部でそのデータを補間したデータを作成して
gnuplot にかける方が自然だと思います。
2D の曲線に関しては補間機能がありますが、
3D ではそのような機能は実装されていません。
(1378 の記事から始まるスレッド
「3D データのコンター図 (GNUPLOT 4.0)」)
-
with lp (linespoints) でデータを描画する場合、
点数が多いと点が重なって見にくいので点の数を減らしたいのですが、
という質問がありました。
plot 'data' with l, '' every 100 with p
だと凡例 (key) が with lp になりませんが、
それを with lp にしたい、ということでした。
それに対して、
- with l, with p は notitle で書いて凡例を出さないようにして、
その後で領域の外、あるいは 1/0 を使って
with lp の架空の描画を行なうようにすればよい
- 上の例だと lines と points の色がずれるので各々色も指定する必要がある
(points の色 (形ではなく) は linetype で決まる)
- 逆に、lines と points の色を変えたい場合は、
このように重ね書きしないと実現できないが、
その場合は凡例は 1/0 などでは実現できないので、
points の凡例を書いた後で
set arrow で凡例のところにむりやり線分を書くという汚い手もある
といった回答がありました。
元記事の方は、set sample がデータ描画でもできれば、
と言っていましたが、例えば
set sample 10
plot sin(x) w lp
してみればわかりますが、
sample は points だけでなく lines にも影響を与えます。
だから、lines の曲線は滑らかにして points を間引くには、
やはり別々に重ね書きして points を every で制御するしかありません。
(1364 の記事から始まるスレッド
「with linespoints のマークの数を減らしたい」)
- (09/13 2006)
(しおり用)
前回の報告 (07/21 2006)以後、
現在の CVS 版に入れられた主な機能について紹介します
(ChangeLog, manual の更新部分等より)。
- 一般的な機能
- set {xyz}data time で文字列関数を与えられるように改良
- GPVAL_{PATCHLEVEL,COMPILE_OPTIONS} の追加
- set termoption 使用時にドライバが初期課されるバグの修正
- 組み込み readline のヒストリに関するバグの修正
- epson ドライバなどで起こる多角形の塗り潰し時の不具合の修正
- y 軸が対数軸であるときの histgram タイトルに関する不具合の修正
- NaN を save で出力しないように
- colorbox に対する tic label 処理の改良
- 未定義データを含む splot の処理の部分的な改良 (using ($1):($2):($3))
- terminal ドライバ
- aqua terminal の default エンコーディングを UTF-8 に変更
- emf terminal でサイズを指定できるように改良
- {svg,tgif,png/jpeg/gif} terminal のサイズ指定、
フォント指定を他のドライバに合わせて変更 (',' 区切り)
- wxt, x11 terminal で {{no}ctrlq} オプションを追加
- win terminal でファイルオープンダイアログが
カレントディレクトリを参照するように改良
(MS-Windows XP に対する不具合の修正)
- wxt terminal のフォントに関する不具合の修正
- その他 {wxt,pslatex,post,pdf,png/jpeg/gif,tkcanvas} terminal の改良
- その他
- exists(), GPVAL_* に関する記述が gnuplot.doc に追加
- X11 の raise に関する記述が gnuplot.doc に追加
- gnuplot 4.2 に向けたドキュメントの改良
- デモ
- demo/rectangle.dem の改良
- demo/image.dem, demo/macros.dem, demo/rainbow.dem, demo/rectangle.dem:
GPVAL_VERSION, GPVAL_COMPILE_OPTIONS 等を使うように改良
その他、多くの bug の修正がなされているようです。
現在は、大きな改良よりも主に 4.2 リリースに向けたバグの修正が
行なわれています。
もう少しで出そうな雰囲気もありますので、
楽しみなところです。
(cf. 「情報やメモ (10/23 2006)」)
- (08/19 2006)
(しおり用)
gnuplot FAQ が新しくなっていたので (rev. 1.22)、訳を更新しました。
私の 「gnuplot のページ」 の
「gnuplot-FAQ の日本語訳」
をご覧ください。
なお今回は、PDF ファイルのしおりの部分を
ちゃんと日本語化するように作ってみました (by dvipdfmx)。
- (07/21 2006; no.2)
(しおり用)
gnuplot Q&A 掲示板
での見聞き等で得た情報を備忘録として書いておきます。
-
3D 表示 (splot) の z 軸の長さを設定したい、という質問がありました。
set size ratio のようなものでできないか、ということでしたが、
z 軸の長さは set view と set ticslevel で制御する、
あるいは X11 terminal の場合は起動時オプション (X 標準のオプション)
である geometry とか、または直接マウスで描画ウィンドウサイズを変更する、
といった回答がよせられました。
(1353 の記事から始まるスレッド
「z 軸の長さについて」)
-
Mac OS X に gnuplot 4.0 を入れたら aqua terminal はちゃんと動いたけど、
X はインストールされているんだけど x11 terminal が動作しない、
という報告がありました。
Mac OS X のことはほとんどわかりませんが、
以下のサイトを見ると、Mac OS X の「ターミナル」からは
直接 X のクライアントは実行しないようで、
X のクライアントを実行するには、それなりの作業が必要なようです。
gnuplot の x11 terminal (と gnuplot_x11) は、
X の環境下でないと実行できませんから、
多分「ターミナル」から gnuplot を立ちあげても使えなくて、
他の X のクライアントと同じように実行する必要があるのだと思います。
(1350 の記事から始まるスレッド
「MacOSX (Panther) で gnuplot」)
- (07/21 2006)
(しおり用)
前回の報告 (06/24 2006)以後、
現在の CVS 版に入れられた主な機能について紹介します
(ChangeLog, manual の更新部分等より)。
- 一般的な機能
- GPVAL_* という多くの参照用変数の追加、
及びそのために show variable に all オプションが追加
- FIT_* といういくつかの参照用変数の追加 (help fit 参照)
- set mouse の ruler オプションの追加と
polardistance が polardistance{deg|tan} に変更
- datafile missing に関する挙動の bug fix
- exists() を exist() でも有効に (octave 用)
- terminal ドライバ
- win terminal のフォントリセットに関する bug fix
- pdf のサイズオプションの追加。
- wxt terminal の改良
- epslatex terminal の色の設定に関する改良
- aqua terminal の font の設定の書式を改良 (従来の形式も利用可能)
- GNUPLOT_PS_DIR を、Windows, OS/2 上では相対パスに変更
(多分実行ファイルのあるパスからの相対パス)
- その他
- m4/pkg.m4 の追加 (これがないと gtk+ がない場合にコンパイルできない)
- tutorial/ に epslatex サンプルを追加
- デモ
- demo/{contours,vector}.dem: set view map を使うデモの改良
- demo/bivariat.dem の改良
- demo/rectangle.dem の改良
- demo/{mouselabels,mouselab_{1,2}}.dem: GPVAL_* を使う新しいデモ
(demo/{mousevariables,keystroke}.demo を削除)
その他、多くの bug の修正がなされているようです。
(cf. 「情報やメモ (09/13 2006)」)
- (07/06 2006)
(しおり用)
現在 CTAN サイトに gnuplottex なるスタイルファイルが置かれています。
これは、LaTeX のファイルの中に直接 gnuplot のスクリプトコードを記述して、
それが生成する EPS ファイルをその場所に取り込む、というものです。
サンプルファイルもありますので、それを
latex -shell-escape example.tex
のように実行すると、内部で gnuplot を実行して EPS ファイルを作成して、
それを取り込んだ dvi ファイルを作成してくれます。
これだと gnuplot スクリプトを LaTeX ファイルと別に持つ必要がないので、
その点では便利かもしれませんが、通常 gnuplot のグラフや、
その貼り込み位置などは微調整をすることが多いので、
むしろ EPS を個別に作成し、直接 includegraphics 命令を書いた方が
いいような気もします。
- (06/24 2006; no.2)
(しおり用)
gnuplot Q&A 掲示板
での見聞き等で得た情報を備忘録として書いておきます。
-
gnuplot-4.0 では set terminal postscript default が使えないが、
という質問がありました。
postscript terminal の default というオプションは、
gnuplot 3.5, 3.7 などでも使えたのですが、
確かに gnuplot 4.0 では使えないようです。
調べてみると、3.8 (beta 版) で postscript terminal を含め、
多くの terminal のオプションを統一的に書き換えたときがあり、
そのときに default を忘れてしまったようです (1999-08-24; rev 1.34)。
その後、4.1 の開発版で修正されています (2005-01-11; rev 1.141)
ので、現在の CVS 版では利用できます。
元記事の人も、角藤さんの CVS 版を利用して解決したそうです。
(1347 の記事から始まるスレッド
「set terminal postscript default」)
-
MS-Windows 上で C 言語から
複数の gnuplot のグラフウィンドウを立ち上げるには、
という質問がありました。
これに対して、
- pgnuplot を使って、_popen() を 2 回使って
2 つのパイプを開けば可能
- _popen() はコマンドプロンプトでは使えるが、
windows アプリケーションとしては使えないので、
windows アプリケーションとして作りたいならば
pgnuplot のソースを見て Windows API を使って書くとよい
- system() で wgnuplot を実行する場合は、
system("start wgnuplot -persist plot1.plt");
system("start wgnuplot -persist plot2.plt");
のように start を使うとできる
のような情報がよせられました。
なお、system() の場合 start を使わずに
system("wgnuplot -persist plot1.plt");
system("wgnuplot -persist plot2.plt");
のようにすると、一つ目の wgnuplot だけが立ち上がって、
それが終了しないと次の wgnuplot が実行せず、
つまりシングルタスクでの実行しかできません。
この start というコマンドを使うと
MS-Windows のコマンドプロンプト上で
色々なジョブ制御が実現できるようです。
(1340 の記事から始まるスレッド
「複数の gnuplot」)
-
データの x 座標と y 座標とに区切りがないのだが、
それをカラム数で切り出すことは可能か、という質問がありましたが、
gnuplot 4.0 ならば、using の format 指定を使えばそれは可能です。
例えば、
111
222
333
というデータ (data) があった場合、
plot 'data' using 1:2 "%1lf%2lf"
とすれば x=1,2,3, y=11,22,33 となり、
plot 'data' using 1:2 "%2lf%1lf"
とすれば x=11,22,33, y=1,2,3 となります。
なお、上の例では 1:2 は特に必要ありません。
(1289 の記事から始まるスレッド
「2 次元プロット」)
-
データの x 座標と y 座標が別々のファイルに保存されている場合、
それを描画するには、という質問がありましたが、
これには、
- OS が Unix ならば paste とか join を使う、awk でもできなくはない
- paste を利用した例は
河野さんの WWW ページに載っている
- MS-Windows で paste を使いたい場合は MS-Windows で動作する
Unix 互換ツールに含まれる paste を使えばいい
- MS-Windows では '< ファイル' のようなコマンドを使う場合は
wgnuplot_pipes を使う必要がある
という情報がよせられました。
(1288 の記事から始まるスレッド
「異なるファイルのプロット」)
-
octave で gnuplot 4.0 を使う場合、$HOME/.gnuplot に set mouse を書くと、
パイプ経由で実行された gnuplot でもマウス機能が使える、
という情報が報告されました。
これは、pipe の最初に set mouse を流してやることでも可能ですが、
gnuplot の help mouse x11_mouse にも書いてある通り x11 ドライバ
(gnuplot_x11) が立ち上がる前に指定しないといけません。
また、Octave に関する話は、gnuplot FAQ にも書いてあります。
なお、この記述は CVS 版 gnuplot (4.1) 用の gnuplot FAQ では、
機能が変わったこともあり微妙に変わっています。
(1282 の記事以降のスレッド
「re(2): パイプでオープンした 3 次元表示でのマウスぐりぐり」)
-
with boxes で棒グラフを書くときに、
set boxwidth と set xrange を使って
その棒グラフの幅が数ドット幅になるようにすると
誤差によって 1 ドット幅だけ広いもの、狭いものができてしまう、
という報告がありました。
確認したところ、確かに 2 ドット幅のものと 3 ドット幅のものが
できていましたが、これはある程度はしかたないと思います。
gnuplot は色んな解像度の出力形式に対応するために、
出力の手前まで座標は小数部分のついた実数として計算していて、
出力の際に整数解像度に合わせて整数化して出力しています
(src/graphics.c: plot_boxes())。
そして、全体の幅から軸、マージンなどを取った上で描画領域を計算し、
その範囲と論理的な描画範囲 (xrange) とのスケール計算をした後で、
その範囲内のグラフのデータ数から棒グラフの幅を計算して出力しますから、
棒グラフの幅のドット数を固定幅にするのは容易ではありません。
データの x 座標が正確に等差数列になっていて、
PNG terminal のように 出力画像の画像ドットサイズがわかるものならば、
以下のように自分でマージンを管理することにすればなんとかなるようです。
- lmargin, rmargin を 0 にする
- set size を 1 より小さい数にして、
set origin を適当に設定する
- set xrange でグラフの x 軸の範囲を設定する
(範囲によっては set autoscale xfix が必要)
- 画像のドットサイズと set size の値から、
グラフ部分のドット数を求める
- boxwidth に与える値を調整して、
内部で計算される棒グラフの幅が丁度整数になるようにする
boxwidth で absolute 指定をして設定した数字は、
それが x 軸の座標の単位になりますから、
例えば
- W1 = (画像全体の横ドット数)×(set size で与えたグラフ幅)
- W2 = xrange で設定した x 軸の単位でのグラフの幅
- W3 = 棒グラフの幅のドット数 (整数)
とすると、boxwidth には (W3-1.0)*W2/W1 の値を設定すれば
うまくいくようです。
W3-1.0 としているのは、
plot_boxes() の中で棒グラフの左端と右端の座標を計算 (整数化) した後で、
棒の幅 = 左端 - 右端 + 1 としているからです。
lmargin や rmargin が正の値だと、そのスケール変換の際に
(左端の整数化) - (右端の整数化) の値が固定された整数値に
なるようにするのはかなり難しいです。
save で保存される数値を見てもそれだけでは計算できず、
内部でのみ使用している変数の値を利用しているので、
試行錯誤では多分無理だと思います。
(1257 の記事から始まるスレッド
「size と xrange の比率による棒グラフの幅の不揃い」)
- (06/24 2006)
(しおり用)
前回の報告 (05/27 2006)以後、
現在の CVS 版に入れられた主な機能について紹介します
(ChangeLog, manual の更新部分等より)。
- 一般的な機能
- reset 時の未定義ユーザ変数の扱いの変更
- 曲線間の塗り潰しのクリッピング処理の bug fix
- defined(X) の代わりに exists("X") を追加
- PostScript 出力のカラーパレットに関する bug fix
- arrows のデフォルトを赤から黒に変更
- set pm3d にオプション depthorder が追加
- show version long の出力の改良
- データ範囲の処理に関する bug fix
- NaN データの処理に関する bug fix
- terminal ドライバ
- wxt terminal まわりの多くの改良
- Postscript terminal 用のファイルのインストール先の改変
- emf terminal の線種に関する bug fix
- GNUTERM に関する bug fix
- postscript terminal のデフォルトフォントを Helvetica,14 に。
- その他
- docs/{faq-ja.tex,gnuplot-ja.doc,term-ja.diff,README.ja},
src/win/{wgnuplot-ja.mnu,README.win-ja}
の日本語マニュアルファイル等の追加
- gnuplot.doc の bug セクションの改良 (for gnuplot 4.2?)
- デモ
- demo/world.dat の改良
- demo/utf8.dem の改良
- demo/stat.inc の改良
- demo/{prob,prob2,random}.dem の改良
- demo/hidden2.dem の追加 (set pm3d depthorder)
- demo/stringvar.dem の改良
- demo/image.dem に関する bug fix
(cf. 「情報やメモ (07/21 2006)」)
- (06/17 2006)
(しおり用)
「情報やメモ (06/15 2006)」
にも書きましたが、研究室の
「gnuplot のマニュアルの日本語化」 のページで公開している
日本語訳等が、この度めでたく本家の開発版の CVS ツリーにマージされました。
マージされたのは以下のファイルです。
- docs/gnuplot-ja.doc: gnuplot.doc の日本語訳
- docs/term-ja.diff: terminal のマニュアルの日本語訳 (差分形式)
- docs/README.ja: gnuplot-ja.doc, term-ja.diff への説明書
- src/win/wgnuplot-ja.mnu: wgnuplot.mnu の日本語訳
- src/win/README.win-ja: MS-Windows ユーザへの説明書
なお、MS-Windows 用のヘルプファイルは、
ここにはマージされない予定ですので、
研究室の
「gnuplot のマニュアルの日本語化」 のページで公開していきたいと思います。
また、これらの更新や公開は、引き続き上記のページで行っていく予定です。
- (06/15 2006)
(しおり用)
私の 「gnuplot のページ」 で公開している、
gnuplot-FAQ の日本語訳
なんですが、この度めでたく本家の CVS ツリーにマージされました。
docs/faq-ja.tex がそれです。
研究室の
「gnuplot のマニュアルの日本語化」 のページの
「情報やメモ (2006 03/25)」
にも書いたように、今後、そこで公開している gnuplot.doc のマニュアルや、
terminal の日本語訳なども
本家の CVS ツリーに取りこまれる可能性があります。
なおこれは、gnuplot-4.2 のリリースへ向けた作業がかなり進んでいることも
意味していますので、期待してお待ちください。
(cf. 「情報やメモ (06/17 2006)」)
- (05/27 2006)
(しおり用)
前回の報告 (03/26 2006)以後、
現在の CVS 版に入れられた主な機能について紹介します
(ChangeLog, manual の更新部分等より)。
少し長いので (期間が空きましたので <_ _>)、
ちょっと分類して書きます。
- 一般的な機能
- "set object" (図形要素の配置) の新設 (現在は rectangle のみ)
- "set style rectangle" の新設
- set arrow に backhead オプション (始点に矢先を描画) の新設
- 描画境界での set arrow の矢先のクリッピングの改良
- set palette でのバイナリ形式のパレットファイルのサポート
- tanh() に負の絶対値の大きな値を与えたときの不具合の修正
(print tanh(-1344) が 1.0 になる)
- candlesticks の whiskerbar (両端につくの水平線) の幅が指定可能に
- データファイルの読み込みの初期化に関する不具合の修正
- terminal ドライバ (OS 依存のもの以外)
- wxt terminal (wxWidgets) の追加
(これが有効な場合、X11 が定義されてなくても wxt がデフォルト terminal)
- terminal driver の仕様に term->path() を追加 (newpath(), closepath())
し、長方形の描画に使うように改良
- svg terminal に rounded/butt オプションの追加
- vgagl terminal が落ちる不具合の修正
- cgm terminal の点の色に関する不具合の修正、多角形描画機能の改良
- 環境変数 GNUTERM で、terminal 名だけでなくオプション指定も
有効になるように修正
(Ex. setenv GNUTERM "png truecolor transparent")
- TeX 系の PS 出力 terminal (epslatex/pstex/pslatex) で
Postscript フォントの変更コマンドの出力をしないように改良
- OS 固有の情報 (X11/win/pm/aqua terminal 等)
- X11 terminal で multibyte の UTF-8 フォントが文字化けする問題と、
より長いフォント名を受けつけるように改良
- X のデフォルトリソースファイルの追加 (share/Gnuplot.app-defaults)
- X11 terminal に solid/dashed 指定を追加
(リソース、コマンドライン、terminal オプションのいずれでも指定可)
- pgnuplot (経由の wgnuplot) で -persist が使えるように改良
- win terminal のフォント指定を、他の terminal と同じ形式も使えるように。
- MS-Windows のヘルプファイルをデフォルトで圧縮機能を使うように変更
- wgnuplot の application data ディレクトリに関する部分の改良
(fallback として環境変数 APPDATA を見るなど)
- OS/2 での make 環境の改良等
- aqua terminal に solid/dashd 指定を追加
- デモ
- demo/{rectangle,utf8}.dem の追加
- demo/{contours,random}.dem の改良
- その他、いくつかの bug fix や改良等。
今回の目玉は、なんといっても鳴り物入りでついに登場した対話型 terminal である
wxt terminal (wxWidgets ライブラリ) でしょう。
これは gtk+ 環境 (cairo, pango) の terminal のようで、
Unix, MS-Windows などの複数の環境で動作することができるものらしいです。
NEWS にも、
* NEW multi-platform and interactive wxWidgets terminal
と書かれています。
上に書いたように、これが有効な場合はこれがデフォルトになるようです。
ただし、うちは gtk+ をちゃんと入れてないので動作を確認できていません。
しかも、gtk+ をちゃんと入れてなくて、その機能を使わないとしても、
この CVS 版をコンパイルするには pkg-config が必要なようです。
(正確には、autoconf 用の m4 マクロファイル pkg.m4 が必要)。
MS-Windows のヘルプファイルについては、
うちで作っている日本語ヘルプファイルも、
次回の版からは圧縮機能したものを作成することにします。
試しにやってみたら、745495 Byte ==> 493008 Byte になりました。
また、今までは、ヘルプコンパイラは古いもの (HC 3.10.505)
を使用していましたが、
HCW 4.03 を取得しましたので今後はこれで作成します。
また、demo/ のファイルは、
そこに書かれている内容が新しい機能の説明やサンプルにもなりますので、
今までは更新情報にはほとんど書いてませんでしたが、
今後はその改良、追加も書いていくことにしたいと思います。
(cf. 「情報やメモ (06/24 2006)」)
- (05/23 2006; no.2)
(しおり用)
gnuplot Q&A 掲示板
での見聞き等で得た情報を備忘録として書いておきます。
-
CVS 版の gnuplot で、MS-Windows 用の拡張テキスト処理モード
(enhanced text mode) がサポートされたのですが、
実際に使用したら wgnuplot が落ちた、という報告がありました。
角藤さんが早速パッチを作成され、それが本家に取り入れられましたので、
03/19 以降のものなら大丈夫だと思います。
(1229 の記事から始まるスレッド
「win terminal enhanced」)
-
現在の CVS 版の gnuplot では、
postscript terminal の出力する PostScript ファイルのヘッダ部分
(PostScript prologue ファイル) が、
以前は post.trm に含まれていたのですが、
現在はそれをユーザが変更できるように、
分離したファイルとして置かれている、
という仕組みになっています。
ところが、それは逆に、そのファイルの置き場所が
固定されてしまう (環境変数 GNUPLOT_PS_DIR で設定できる)
ことにもなりますので、
自分コンパイルしないことが多くて
バイナリを適当なところにインストールできた MS-Windows 版の場合は、
バイナリに設定されている場所に合わせてインストールするか、
環境変数を必ず設定するか、
という制限のついた形になることになってしまうことになります。
国内で CVS 版の gnuplot の MS-Windows 用バイナリを作成しておられる
角藤さんは、その辺りのことを考え (てのことだと思いますが)、
- PostScript prologue ファイルは wgnuplot.exe のあるディレクトリの
PostScript/ というディレクトリを探すようにした
- そのディレクトリがない場合に環境変数 GNUPLOT_PS_DIR を見るようにした
という変更を行なったものをコンパイルして置いておられるそうです。
MS-Windows 版としては、確かにそれが自然な仕様のような気もしますので、
本家の MS-Windows 版もそのようになるといいのかもしれません。
(1236 の記事から始まるスレッド
「ps prologue files」)
-
CVS 版の gnuplot と gnuplot-4.0 では、
set size 0.3,0.6
set origin 0.2,0.2
plot x
には違いがありません。
- gnuplot 4.0 の場合 (X11 terminal)
- gnuplot CVS 版の場合 (X11 terminal)
しかし、これを
set size ratio 1 0.3,0.6
set origin 0.2,0.2
plot x
とすると違いがでます。
- gnuplot 4.0 の場合 (X11 terminal)
- gnuplot CVS 版の場合 (X11 terminal)
size ratio 1 0.3, 0.6 とすると、
0.6 の方に余白ができることになりますが、
CVS 版 gnuplot ではその余白をこめた範囲で
縦方向にセンタリングしているようだが、なんとかできないか、
という報告がありました。
確かに、origin を設定している場合、
その原点が描画の左下に合っている方が自然なような気がしますが、
この仕様の変更はあえてそうやっているようです。
cf. gnuplot-beta-ML の記事
元の仕様に戻すためのパッチも流れましたが、
「0.3, 0.6 を ratio 1 に合わせて適切な数字に設定して余白をなくす」
ということで対応できます。
なお、上の画像を作るときに気がつきましたが、
このサンプルって、terminal によって全然違うんですね。
主要 3 大 terminal である X11, PS, PNG でまるで違うものになります。
ちょっとビックリしました。
- test1 の物を PNG terminal で
- test1 の物を PS terminal で
- test1 の物を X11 terminal で
なんででしょう、よくわかりません。
(1238 の記事から始まるスレッド
「set size ratio 使用時のグラフの位置」)
-
ポアソン分布のデータを、その密度関数 (分母に x! という階乗が入る)
でフィッティングしたいんだけど、エラーがでる、という質問がきました。
もちろん、ポアソン分布は x は整数しか使用しませんから、
x! で問題はないのですが、
フィッティングに使用したいとなると
x は指定した範囲の実数全体の値がとれないといけません。
x! の代わりに、Γ関数を使って gamma(x+1.0) としたら、
という意見がありましたが、確かにそれでとりあえず解消できそうです。
(1251 の記事から始まるスレッド
「ポアッソン分布のフィッティングについて」)
-
OpenOffice.org に含まれる Writer (ワープロソフト) に、
gnuplot の作成した EPS ファイルを取りこんだら、
画像がかなり荒くなってしまう、という報告がありました。
これに対して、漢字は使えないが (gnuplot-4.0)
OOo なら EPS よりも EMF 形式のものを取り込んだ方がいいだろう、
という意見があり、
実際それで綺麗に出たそうです。
なお、CVS 版の gnuplot を使うと、
EMF terminal でも日本語が使えるようになります (cf. 1089 番の記事)。
Unix 上でも EMF は作れるのですが、
ただしその場合は Shift_JIS で日本語を書く必要があるようです。
以下のようなものを Shift_JIS にして
Unix 上の CVS 版 gnuplot に食わせて、
それを MS-Windows XP に持っていったら、
ちゃんと日本語も表示されました。
set term emf
set out "testemfj.emf"
set title "ここは日本語タイトル"
font "msmincho,20"
set xlabel "こんなんもでるんかいな"
font "msgothic,15"
plot sin(x)
set out
(1256 の記事から始まるスレッド
「OOo WRITER に gnuplot で作成した eps を挿入」)
- (05/23 2006)
(しおり用)
「情報やメモ (04/24 2006)」,
「情報やメモ (04/30 2006)」
に書いた、gnuplot の CVS 版がダウンロードできない件ですが、
現在は復旧しています。
ただし、設定が少し変わりましたので、注意が必要です。
今までは、
CVSROOT=:pserver:anonymous@cvs.sourceforge.net:/cvsroot/gnuplot
だったのですが、現在は、
CVSROOT=:pserver:anonymous@gnuplot.cvs.sourceforge.net:/cvsroot/gnuplot
となりました
(sourceforge.net の方針で、全てのプロジェクトの CVS が
そのようになったようです)。
適宜変更して取得してください。
cf.
また、今までのものに上書きする形で取得しようと思ったのですが、
うまく取得できませんでした (CVS/Root のせい ?) ので、
gnuplot/ を一旦消してからまるごと取得しました。
これでうまくいきました。
- (04/30 2006)
(しおり用)
「情報やメモ (04/24 2006)」
に書いた、gnuplot の CVS 版がダウンロードできない件ですが、
以下に、スナップショットを置くようにしたそうです。
(cf. 「情報やメモ (05/23 2006)」)
- (04/24 2006)
(しおり用)
ここしばらく gnuplot の CVS 版がダウンロードできない状態が
続いていますが、
これはたまたま、なのではなく、しばらくだめなようです。
gnuplot-beta ML の以下の記事をご覧ください。
上の記事にも書かれていますが、現在の CVS 版を archive したものが
とりあえず以下に置かれています。
見たところ、私が最後に取得したもの (03/28 2006) よりも新しいようです
(04/12 2006 更新)。
(cf. 「情報やメモ (04/30 2006)」,
「情報やメモ (05/23 2006)」)
- (03/26 2006)
(しおり用)
前回の報告 (03/12 2006)以後、
現在の CVS 版に入れられた主な機能について紹介します
(ChangeLog, manual の更新部分等より)。
- "set style increment {default|userstyles}"
という設定の新設
- term epslatex での不具合の修正
- pm3d 描画の連続描画時の高速化 (カラーパレット情報の更新を最小限に)
- enhanced text mode のバグの修正 (by A.Kakuto)
- "lt -3" の代わりに "bgnd" も使えるようになった
- データファイル中の引用符で囲まれた時系列データも許可
- PostScript terminal の初期出力部分とエンコーディング依存部分を
修正、改良が行えるように個々のファイルに分離
「set style increment {default|userstyles}」は、
デフォルトの線種に、ユーザ定義ラインスタイルを割りこませることを
可能にするものです。
これまでもラインスタイルはユーザ定義が可能でしたが、
それを使用するには明示的な指定が必要で、
指定がなければデフォルトの線種が 1 つずつ線種番号順に使われていました。
"set style increment userstyles" を使用すると、
ユーザ定義ラインスタイルが、
そのラインスタイル番号の線種番号の代わりに
デフォルトで使われるようになります。
オンラインマニュアルにサンプルが載っていますが、
set style line 1 lw 2 lc rgb "gold"
set style line 2 lw 2 lc rgb "purple"
set style line 4 lw 1 lc rgb "sea-green"
set style increment user
plot f1(x), f2(x), f3(x), f4(x)
とすると、f3 はデフォルトの線種が、
f1,f2,f4 は上で定義したラインスタイルが使用されます。
「enhanced text mode のバグの修正」は、
gnuplot Q&A 掲示板 の 1229 の記事
(「win terminal enhanced」)
から始まるスレッドで Kakuto さんが提示したパッチです。
「データファイル中の引用符で囲まれた時系列データ」は、
データファイルの引用符内のデータは
従来は数値データとしては読み込めなかったようですが、
それができるようになったようです。時系列データは、
"2006-03-26 09:00" のように空白が入る場合があり、
そういったデータは自然に引用符で囲んで一つのデータとみなしたくなりますが、
そのような要求に答えたものだろうと思います。
「PostScript terminal の初期出力部分...」は、
従来は PostScript 出力系の terminal の出力する PostScript ファイルの
初期出力部分、エンコーディング部分を、
実行時にも容易に別のもので置きかえることを可能にします。
それらは環境変数 GNUPLOT_PS_DIR や、"set loadpath"
で設定されたディレクトリから読み込みますので、
それらを設定して自分で用意したものを使用することができます。
実際にはそれらを 1 から作るのは難しいでしょうが、
gnuplot の配布物に含まれるそれら (term/PostScript/ 以下)
を修正することが可能になります。
従来は、term/post.trm にパッチを当ててコンパイルし直すか、
できあがった PostScript ファイルを修正するしかなかったわけですから、
それに比べてかなり柔軟な形式になっていると思います。
(cf. 「情報やメモ (05/27 2006)」)
- (03/12 2006; no.2)
(しおり用)
「情報やメモ (02/19 2006; no.2)」 の
gnuplot Q&A 掲示板
での情報に書いた png terminal の enhanced モードの問題
(1224 の記事から始まるスレッド
「pngで上付き」) ですが、
続報があり、MS-Windows 上の 4.0 では TrueType フォントを
"C:\WINDOWS\Fonts\ARIAL.TTF" のように指定してもうまくいかない、
4.1 だとうまくいく、という報告がありました。
これは、wgnuplot 4.0 の角藤版はそのような指定でも OK だけど、
本家の wgnuplot 4.0 は確かにうまくいかない、
README.Windows に書いてあるように、
"C:/WINDOWS/Fonts/ARIAL.TTF" のようにパスの区切りを
'\' でなくて '/' にするとうまくいくらしいです。
- (03/12 2006)
(しおり用)
前回の報告 (02/19 2006)以後、
現在の CVS 版に入れられた主な機能について紹介します
(ChangeLog, manual の更新部分等より)。
- imagen ドライバの修正 (3.7 以来のバグらしい)
- gnuplot_x11 のパイプ部分の改善
- pm3d の色指定で、gray と grey の両方を受けつけるように修正
- 曲面描画が明示的に RGB 指定されたりしている場合の
等高線の描画色がおかしいバグの修正
- win terminal の点種 (pointtype) を、postscript terminal,
png terminal などと同様のものに変更
- aqua terminal での encoding のサポート (iso_latin_1,
iso_latin_2, cp1250)
- set term epslatex oldstyle の場合の線種の定義のバグの修正
- win terminal で拡張テキスト処理モード (enhanced text mode) を
サポート
- win terminal で with image (画像の描画) をサポート
- cgm, emf, pdf, postscript の各 terminal で、
terminal オプションで
'font "<fontface>,<fontsize>"'
の指定をサポート (従来の指定形式も使える)
- Watcom C 用の修正
- pm terminal (for OS/2) の改良
- 入力データファイルに問題があるときに
警告を表示して描画を続行するようになった
- その他、多くのバグの修正
今回は、win terminal の enhanced text mode と with image のサポート
が目玉でしょうか。
また、最後の入力データの問題ですが、例えば、
plot 'file1.dat' w l, sin(x)
のような描画の際、
もし file1.dat というファイルが見つからなかった場合は
今までは、「file1.dat ってなファイルがありまへんで」のように
言われて何も描画してくれなかったのですが、
これが、「file1.dat は読めへんからスキップするで」のように表示して、
次の sin(x) は描画してくれるようになった、
というような改良です。
(cf. 「情報やメモ (03/26 2006)」)
- (02/19 2006; no.2)
(しおり用)
gnuplot Q&A 掲示板
での見聞き等で得た情報を備忘録として書いておきます。
-
ある曲面の等高線のグラフ (pm3d map) と、
2 次元の曲線描画を重ねたい、という話がありました。
1129 の記事でも似たような話がありましたが、
multiplot で実現できます。
ただその場合 2 次元データは、
同じ 3 次元データとして書く必要がありますので、
データに z 座標を追加するか、
splot "2d.dat" using 1:2:(10) w l
とかする必要があります。
また、pm3d は他の描画を消してしまいますから、
pm3d を書いた後で 2 次元データを描画する必要があります。
(1169 の記事から始まるスレッド
「3-d と 2-d を混在表示させる方法について」)
-
データの 1 行目 2 列目の値を取得して、
描画のときに shift 値として使用したい、という話がありました。
gnuplot 単独では難しいですが、AWK を利用すれば簡単にできます
(が、私はえらく難しい回答を書いてしまいました)。
そういえば、gnuplot は call で他のスクリプトを呼んだ場合、
そのスクリプト内で使用した変数は親の方でも残ります。
(1178 の記事から始まるスレッド
「データを変数として取り出す方法について」)
-
fit で合てはめを行なう変数の変域を制限したい、という話がありました。
通常、変域を制限すれば、
その中ではうまい値が見つからずに fitting が失敗する、
ということがあり得ますが、
元記事の方は、その変域しか用がないからそこに入るようにしたい、
といった要請のようでした。
それに対して、atan() (アークタンジェント) を使って、
有限な変域を無限な変域に変換すれば有限の範囲しか動かないよう
できなくはない、という解が示されました。
その後、簡単な例でそれに似たような関数でやってみると
fit が失敗するという事例が報告され、
Marquardt-Levenberg 法の原理にまで話が発展しました。
(1185 の記事から始まるスレッド
「fit で変数の変域を指定するには?」)
-
データの縦横が逆になっているものの描画をしたい、
という話がありましたが、それは gnuplot 内部で処理させるのは厄介です。
gnuplot 外部で AWK や Perl などを使って
転置させたデータを処理させるのがいいでしょう。
(1196 の記事から始まるスレッド
「ファイル読み込みについて 」)
-
CVS 版の gnuplot のダウンロードがうまくいかない、
という話がありました。
私もほぼ毎日アクセスしていますが、
Sourceforge のサイトが新しくなってから
確かにそういうことが多くなっているような気がします。
日を改めてアクセスすればうまくいくと思います。
(1216 の記事から始まるスレッド
「CVS 版 gnuplot の取得について」)
-
EPS 出力を行なった後で "set term x11" と復帰して
そちらで描画すると EPS ファイルが壊れる、という報告がありました。
これは、EPS 出力を行なった後で "set output"
(ファイル名なし) を実行すれば解消されます。
(1220 の記事から始まるスレッド
「eps ファイルが壊れる」)
-
gnuplot-4.2 のリリースに向けた作業が始まりました。
(1223 の記事
「gnuplot-4.2 リリースに向けた作業の開始」)
-
png enhanced で上付き、下付きの文字を
"set xlabel 'x_1'" のように出そうとすると、
"gdImageStringFT: Could not find/open font"
のようなメッセージが出てエラーとなる、という報告がありました。
gdImageStringFT() というのは png terminal (gd terminal ドライバ)
が使用する gd ライブラリの関数で、
TrueType フォントや Adobe Type 1 フォントなどを描画するものです
(FreeType ライブラリ経由)。
enhanced text の上付き、下付き文字のように
文字のサイズを変更する必要がある場合、
png terminal は TrueType フォントなどを使ってそれを行ないますので、
terminal の設定時 (set term png) に TrueType フォントなどを
指定する必要があります。
(1224 の記事から始まるスレッド
「pngで上付き」)
(cf. 「情報やメモ (03/12 2006; no.2)」)
- (02/19 2006)
(しおり用)
前回の報告 (12/03 2005)以後、
現在の CVS 版に入れられた主な機能について紹介します
(ChangeLog, manual の更新部分等より)。
- hidden3d での点やベクトルの陰線処理が可能になった
(demo/melecule.dem, demo/pointsize.dem, demo/rgb_variable.dem)
- splot の with に nohidden3d が追加
(描画を個々に hidded3d の適用から外すことが可能)
- win terminal で RGB 指定での文字色、線種による文字色の指定をサポート
- win terminal の gd library 用の改良
- win terminal で文字列の任意の角度の回転のサポート
- gnuplot のバージョンの日付表示が変更に (February 2006 のような形式に)
- gif terminal に optimize (GIF animation 用) が追加され、
デフォルトでは nooptimize になった (demo/animate2.dem)
- png terminal に rounded/butt が追加 (線の先の形状)
- set view map の colorbox が、デフォルトで y 軸全体の幅になり、
任意の座標系で位置、サイズの指定ができるようになった
- emf terminal のいくつかの改良
- postscript terminal に size XX, YY オプションが追加
(BoundingBox も変更される)
- VMS + DEC C 用の修正
- candlesticks, financebars の線を縦方向の境界でも
クリッピング処理するようになった
- その他、多くのバグの修正
(cf. 「情報やメモ (03/12 2006)」)
- (01/22 2006)
(しおり用)
gnuplot Q&A 掲示板
での見聞き等で得た情報を備忘録として書いておきます。
-
関数の fitting したものを、一部の区間だけ表示したい、
という質問がありました。
普通に一部の区間だけ表示する回答
(3 項演算子の ? と 1/0 を利用する方法)
が紹介されましたが、
fit で範囲を指定することもできる、
という指摘 (およびサンプル) もありました。
(1124 の記事から始まるスレッド
「fit した関数の表示区間について」)
-
xy 平面のある円形領域上のデータで、
円筒座標系で記述されているものがあり、
それを、
- dgrid3d で補間し
- その円形領域外には表示したくない
ということをしたい、という話がありました。
これがなぜ問題かというと、現在の gnuplot では
- mapping cylindrical はデータの読み込みでは有効
- しかし (少なくとも) dgrid3d をするときは
内部では (x,y,z) (cartesian) 座標に変換されてからそれが行われる
- よって、円形領域上のデータではなくある矩形領域上のデータが
作られてしまう
という事情によります。
よって、これを行う解として、
- 上記のように dgrid3d を用いる (矩形上のデータになる)
- そのデータの元の円形領域外の部分を捨てる
(3 項演算子 ? と 1/0 で)
というものが紹介されました。
なお、分野にもよるのかもしれませんが、
「円筒座標」は「円柱座標」とも呼ばれることがあり、
うちで公開している gnuplot のマニュアルでは後者を使っています。
(1129 の記事から始まるスレッド
「(質問) 3D グラフの表示範囲規制」)
-
カラーマップ (pm3d map) 図にベクトルを書きたい、
という要望がありましたが、
これは、
- multiplot で pm3d map と plot with vector を重ねる
という方法もありますが、座標系の変換や調節が大変です。
開発版 gnuplot (4.1) ならば splot with vector が使えるので、
これを使えば簡単にできますが、
gnuplot-4.0 では残念ながら with vector は plot でしか使えません。
松田さんの splot with vector を使った
(ある分野ではとても役立ちそうな) サンプルも紹介されました
(
cf. gnuplot に関するTips 集)。
(1135 の記事から始まるスレッド
「カラーマップとベクトル図を重ねる」)
-
gnuplot のフロントエンドである Qgfe, unignuplot が
cygwin 上で動いた、という報告がありました。
Qgfe は Qt で書かれていますが、
unignuplot は Tcl/Tk で書かれているので、
cygwin を使わなくても
MS-Windows 上の Tcl/Tk でも動きそうだそうです。
(1146 の記事から始まるスレッド
「Qgfe on cygwin gnuplot」)
-
FreeBSD (4.11) で gnuplot の開発版をインストールしようとしたが、
./prepare の途中でコケる、という話がありました。
これは、FreeBSD に標準の /usr/bin/make (BSD make) を使うと
確かにそのようになるようです。
GNU make を使えばちゃんとインストールできます。
BSD make は多少癖があり、
カーネルのコンパイル等ではもちろん必要なのですが、
フリーソフトのインストールでは、
多くの場合 GNU make を使うのが無難だと思います。
(1154 の記事から始まるスレッド
「gnuplot 4.1 のインストールが出来ません」)
-
gnuplot 開発チームが、CVS 版 gnuplot (4.1) の
MS-Windows バイナリ (及び OS/2 バイナリ) も
適宜置くことにした、という報告がありました。
今までは、gnuplot-4.1 の MS-Windows バイナリは
角藤さんによるものしかなかったので、
そういう状況は多少改善されたと思いますが、
角藤さんのもの
(
cf. W32TeX のページ) と比較すると、
- 角藤さんのものよりも古そう
- 角藤さんのものの方が pdf や png/gif/jpeg terminal は
少しいいのかも
という気がします (ちゃんとした確認はとっていません)。
確か角藤さんのものは、
日本語対応の GD ライブラリをリンクされていたようでしたので、
多分今後も角藤さんのものを使われる方がいいだろうと思います。
(1160 の記事
「MS-Windows 用 gnuplot-4.1 バイナリ」)
-
set size square とすると右側に余白ができますが、
set terminal postscript eps の出力ではその余白が残ってしまうのですが、
という質問がきました。
eps2eps を使う、という手があるそうですが、
それだとフォントの解像度が落ちるそうです。
これには、例えば gs (ghostscript) の bbox 出力を利用して
EPS ファイルの BoundingBox 行を再計算してやる、
という方法があります。
ついでに、その EPS ファイルの BoundingBox を、
その bbox 出力で置きかえた EPS ファイルを作成するような
簡単な csh スクリプトを作ってみました。
使い方は、chmod u+x rebb したものをパスの通ったところに置いて、
rebb file1.eps > file2.eps
とすれば file1.eps から file2.eps が作られます。
なお、これには bbox 出力をサポートする gs が必要で、
デフォルトでインストールされている gs は
それをサポートしてないこともありますので、
gs -h で確認してから使ってください。
また、ps2eps なるソフトもあるようです。
(1161 の記事から始まるスレッド
「eps での右余白の処理について」)
(cf.
「情報やメモ (01/11 2009)」)
- (01/15 2006)
(しおり用)
「gnuplot-FAQ (日本語訳)」
の makefile.gp-faq というファイルへのリンク先を
長らく間違えていたようです。
失礼しました。それを修正しておきました。