ページが長いので「しおり」の仕組みを用意してみました。
「しおり用」と書かれた所をクリックしてからブックマークに入れると、
それはページの先頭ではなく、その箇所へのブックマークになります。
(03/03 2006)
今までちゃんと説明していませんでしたが、
ここには、日付ごとに記事 (記事 A とします) を書いていますが、
その最後に、(cf. 「情報やメモ (XX/XX 20XX)」)
のように別な日付の記事 (記事 B とします)
へのリンクがついているものがあります。
これは、「被参照リンク」で、
記事 B が記事 A を参照している (リンクを貼っている) ことを意味します。
つまり、記事 B の方が記事 A より後の記事であり、
記事 A の続きや追加情報、訂正などの内容であったり、
記事 A に関連する別な話題であったりしますので、
記事 A に被参照リンクがついている場合は、
是非そちら (記事 B) もご覧ください。
(01/29 2014)
- (12/21 2017)
(しおり用)
いくつかまとめて報告します。
- 現在の最新リリース版は 5.2.2 です。11/16 頃にリリースされました。
ただし、5.2.1 からの変更点はほとんどなく、NEWS を見ると、
「積み上げ型 histograms の xrange の自動縮尺」の修正が入っているくらいです。
- SouceForge の gnuplot の開発版の管理が CVS から Git に変わって、
開発版を追いかける作業も、少し変更を余儀無くされています。
そのため、開発版に関する情報の提示も遅れ気味です。
どうもすみません。
- 一つだけ、最近導入された仕組みを紹介します。それは set wall です。
set walls
set wall {x0|y0|z0|x1|y1} {<fillstyle>} {fc <fillcolor>}
以下は、set walls とした後に描いた 3 次元グラフです。
- set walls の次に描いた 3 次元グラフ
- 別な角度から見たもの
見てわかる通り、
この set wall は xy 平面などの軸が作る平面を壁として塗るものです。
各壁に別々に色や塗り潰しスタイルを設定できます。
terminal がサポートしていれば透過型にもできます。
確かに、こういうグラフを見たことがあったような気がしますし、
今までの gnuplot だとこういうことはやりづらかったかもしれません。
なお、上の例では、set walls の後に splot しただけですが、
本来はその後で「set xyplane 0」をしてから描くといいだろう、
とマニュアルには書いてあります。
- (10/31 2017)
(しおり用)
10/30 頃に、gnuplot-5.2.1 が公開されました。
5.2.1 での新規機能、変更、修正は以下のようです。
- 新規: CSV ファイル生成可能な
set table separator {tab|comma|"char"}
- 新規: 3D 描画時にマウスで z 軸方位変更するための hotkey
- 新規: "splot .. with lines" のタイトルに対する at {beg|end}
- 新規: gstrptime() での相対時間書式 tH tM tS の処理の作り直し
- 新規: 入力 RGB 値の解釈の制御コマンド 'set rgbmax <value>'
- 変更: 対数軸に対する tic 増分を 5.2 以前の公比の解釈に戻す
- 変更: key の中のタイトルと手動配置タイトルの混在を許す
- 修正: spline, bezier の平滑化での plot の自動縮尺
- 修正: x2 か y2 軸でのデータ描画時の link 軸の自動縮尺
- 修正: "with filledcurves below y=foo" で y の値が
foo に等しいときの誤処理
- 修正: [windows] コンソールへの stderr/stdout リダイレクトの破損を補修
- 修正: postscript terminal での点線/破線の円描画の作成
- 修正: y が対数軸で空範囲のときの処理をエラーでなく警告に
今回は簡単なバグ修正などが主ですが、
いくつか開発版からの移行機能も含まれています。
なお、SourceForge が CVS によるソースの管理のサポートを
11 月まで、としたらしく、gnuplot の開発版ソースツリーも現在 CVS から
git への移行作業を行っているようです。
そのため、CVS 版のソースツリーが最近更新されていませんが、
このまま今後更新はされず凍結されるようです。
ただし、しばらくは参照は可能なようです。
これまで、私は開発版のことを「CVS 版」と呼んできましたが、
今後はその呼び方も変える必要がありますね。
開発版の日本語ドキュメントや情報については、
git 版が安定稼働してから更新する予定です。
- (10/11 2017)
(しおり用)
前回の報告 (08/03 2017)以後、
現在の CVS 版に入れられた主な機能について紹介します
(ChangeLog, manual の更新部分等より)。
- 一般的な機能
- 非線形軸、リンク軸に関するサンプル点生成部分の問題の修正 (#1973) (10/09)
- 1 軸と 2 軸の自動縮尺範囲を別々に処理する際の問題の修正 (#1973) (10/08)
- 配列を「array A=["a", "b", "c"]」
とできるように (サイズの自動設定)
(09/29)
- 軸の範囲が逆向きの際に起きる問題の修正 (09/29)
- 平滑化の際、その後の範囲チェックで失敗する問題の修正 (09/25)
- mcspline で元の点を通ることを保証する (#1972) (09/23)
- logscale 軸に対して、増分形式の set xtics が公比となるよう (09/23)
- 描画タイトルを columnheader から取る場合用の文字列評価の修正 (#1968)
(09/18)
- using での columnhead(N) の仕様に関する修正 (#1968) (09/15)
- NaN や未定義値が「for [i=min:*]」に与える影響に関する問題の修正 (09/15)
- title at {beg|end|<position>} と通常の key を混在可能に (#1967)
(09/13)
- set rgbmax で RGB 色範囲を [0:255] から [0:1] に変更できるように (09/11)
- 逆向きリンク軸で刻みが生成されなかった問題の修正 (09/10)
- 範囲制限軸と非線形軸、リンク軸に関する問題等の修正 (#1964, #1965)
(09/10, 09/11)
- %tH, %tM, %tS を strptime() 入力でも使えるように (09/05)
- link 軸、非線形軸に関するチェック部分の修正 (09/04)
- 開発者用の「set debug 値」を導入 (09/04)
- %tH, %tM が仕様通りの挙動でなかった問題の修正 (09/03)
- リンク軸と plot のインライン範囲指定に関する修正 (09/02)
- Alt, Ctrl をホットキーに追加できるように (08/31)
- 3D マウス操作の方位設定用ホットキー <, > (08/31)
- splot with rgbimage, rgbalpha の処理 (08/18)
- '++' の範囲指定で明示的サンプリング区間指定できるように (08/18)
- with rgbalpha pixels での alpha チャンネル範囲を [0:255] に (08/18)
- rgbimage データに cbrange を適用しないように (08/17, 08/22)
- バイナリファイル名の ~ で始まる部分を展開するように (08/16)
- 入れ子の iteration での空の範囲に関する修正 (#1952) (08/08, 08/11)
- set table で内部変数の更新に関する問題の修正 (#1954) (08/07)
- set view map の場合の set key fixed を無視するよう修正 (08/05)
- データブロックの append オプションを実装 (#1951) (08/05)
- terminal ドライバ, wgnuplot 等
- wgnuplot: Help メニューに gnuplot.ini, wgnuplot.ini の編集項目を追加
(10/06)
- win: 絵文字などのカラーフォントが使えるように (10/05)
- gd: アニメーション列の最終フレーム数を報告 (10/03)
- wgnuplot: システムコマンド実行時にコンソールを使用できるように (10/01)
- cairo: valgrind の警告に対する対処 (09/19, 09/20, 09/21)
- win: cosole ハンドラの導入 (09/01)
- x11/qt: 起動できなかった場合に GNUPLOT_DRIVER_DIR の値を表示 (08/17)
- win: 印刷時の最低限のバックエンドの変更 (08/15)
- win: 解像度と線幅のスケールの関係に関する修正 (08/15)
- metapost: ユーザ定義 dashtype のサポート (08/07)
- win: D2D 1.1 を使っていない場合のパターンに関する修正 (08/05)
- その他
- Windows 用コード (WEXITSTATUS 関係) などを修正 (10/06)
- MSVC でのビルドで lua/tikz 用ファイルもインストール (10/06)
- mingw でビルド時の helpfile の扱い、デフォルト backend などの変更
(10/06)
- wxgtk3 用の configure の修正 (09/04)
- qt のバージョンに関する configure の修正 (09/03)
- mingw でのビルドで再帰的な make を使わないように (08/12)
- MSVC でのビルド環境のいくつかの改良 (08/09, 08/10, 08/15)
- MSVC 2015 から snprintf が C99 準拠になるのに合わせた修正 (08/06)
- コードの typo やコンパイラの警告を避けるための修正 (08/04, 08/16, 09/17)
- 内部使用マクロの修正 (08/03)
- watcom, mingw 用の Makefile の修正 (#1942) (08/03, 08/04, 08/28)
- デモ
- linked_autoscale.dem: (10/08)
- nonlinear6.dem: (09/23)
- boxclusters.dem: (09/19)
- columnhead.dem: (09/18)
- image2.dem: (09/11)
- timedat.dem: (09/03, 09/05)
- image.dem: (08/22)
- sampling.dem: (08/18)
- iterate.dem: (08/08)
- rgba_lines.dem: (08/05)
また前回の報告から 2 ヶ月以上たちましたので、
かなり修正が入っています。
新しい機能は以下のものでしょうか。
- 配列を「array A=["a", "b", "c"]」
とできるように (サイズの自動設定)
(09/29)
- logscale 軸に対して、増分形式の set xtics が公比となるよう (09/23)
- using での columnhead(N) の仕様に関する修正 (#1968) (09/15)
- title at {beg|end|<position>} と通常の key を混在可能に (#1967)
(09/13)
- set rgbmax で RGB 色範囲を [0:255] から [0:1] に変更できるように (09/11)
- %tH, %tM, %tS を strptime() 入力でも使えるように (09/05)
- 開発者用の「set debug 値」を導入 (09/04)
- Alt, Ctrl をホットキーに追加できるように (08/31)
- 3D マウス操作の方位設定用ホットキー <, > (08/31)
- splot with rgbimage, rgbalpha の処理 (08/18)
- '++' の範囲指定で明示的サンプリング区間指定できるように (08/18)
- データブロックの append オプションを実装 (#1951) (08/05)
- win: 絵文字などのカラーフォントが使えるように (10/05)
- wgnuplot: システムコマンド実行時にコンソールを使用できるように (10/01)
ちょっと試してみる時間がありませんので、
ご自分でお試しください。
ここでは、気が向いたときにでも紹介したいと思います。
また、上では更新されたデモファイルに関する説明を書いていませんが、
すみません、手抜きです。
ほぼ更新日に対応する修正や追加機能に対応するものが追加、
修正されていると思います。
(cf. 「情報やメモ (01/30 2018)」)
- (09/05 2017)
(しおり用)
09/04 頃に、gnuplot-5.2.0 が公開されました。
5.0 以来の大きな改訂で、開発版の多くの新機能が導入されています。
5.2.0 での新規機能、変更、修正は以下のようです。
- 5.2.rc4 からの変更
- 新規: metapost terminal でのユーザ定義 dashtype
- 新規: datablock を文字列の配列値としてもアクセスできるように
- 変更: 疑似ファイル '++' 使用時の u, v
の明示的なサンプル区間指定が可能に
- 変更: "with rgbimage" での色成分から cbrange を分離
- 修正: "set view map" と "set view equal xy"
のアスペクト比フラグを調整
- 修正: "set key fixed" は "set view map"
では無視されるように
- 修正: "set table" モードで GPVAL_*
変数が更新されていなかった問題
- 修正: 入れ子のループの中に範囲が空のものがある場合の評価
- 修正: time_spec の書式 %tH %tM のバグ (期待された動作になっていない)
- 5.2.rc3 での変更
- 新規: "plot with table" で文字列値出力列を処理できるように
- 変更: ユーザマニュアルに caca terminal のドキュメントを追加
- 変更: "test" コマンドの出力を改良
- 変更: 組み込みの "fake" popen でなく Mingw-w64 と
MSVC popen を使用
- 修正: 起動時に環境変数 GNUTERM を内部変数にコピー
- 修正: plot 'with table' のより一貫した処理
- 修正: 不正な (空かも) コマンド文字列が前の fit で保存された問題
- 修正: "fit" で使用する内在ダミー変数の非数値を無視
- 修正: 揮発性データの "with vectors" での描画の
refresh 時の自動縮尺
- 5.2.rc2 での変更
- 修正: terminal の初期化を ~/.gnuplot の実行前に行う必要がある
- 修正: 表出力で LaTeX の書式化を使用しないよう
- 修正: 極座標の境界を長方形境界でクリッピングしないよう
- 修正: raxis が軸方向が逆向きの場合に R=0 で切り捨てていた問題
- 修正: "plot '+' binary" の取得時のチェック
- 修正: gprintf に NULL の書式が渡されるかのチェック
- 修正: set link と set nonlinear の逆割り当て関数のチェック
- 修正: 空の画像データ構造体に関するチェック
- 修正: timestamp 文字列の不正による segfault の問題
- 修正: いくつかの初期化されない変数 (Bug 1933 を参照)
- 修正: dumb term: カラーモードでない際に線種文字の区別が抜けていた
- 変更: svg terminal オプション "fontscale" で古い
"fsize" を置き換え
- 5.2 での変更と新機能
- 新規: plot styles
- splot ...
using <x>:<y>:<z>:<zlow>:<zhigh>
with zerrorfill
- ビースウォームグラフを描く "set jitter"
- x の等しい幅の箱にソートして入れるデータフィルタ "bins"
- "with points" と "with linespoints" で
`pointtype variable` を許可
- hidden3d は今は 'image' と 'rgbimage' を閉じた長方形として処理
- "smooth fnormal" で頻度の正規化を
- 新規: 極座標モードの改良と拡張
- "set [m]ttics" で極座標格子の外周の回りにラベルを配置
- "set rlabel" で r 軸の上にラベルを配置
- "set rrange [90:0]" で天球地平座標での描画
- "set border polar" で極座標グラフの外周の境界線種指定
- "set theta <origin> <sense>"
で極座標の角の向きの指定
- label, arrow, object の位置を極座標でも指定可能に
- 新規: 非線形軸系
- "set nonlinear <axis> via f(axis) inverse g(axis)"
- "set log" を "set nonlinear"
の特別な場合として再実装
- 新規: 配列データ型 array[size]
- 新規: コマンドとコマンドオプション
- "break" で繰り返しのループから抜ける
- "continue" で直ちに次の繰り返しを開始
- "toggle {<plotno> | "plottitle" | all}"
- "set pm3d lighting"
で反射光ハイライトによる点光源モデル指定
- "set table OUTFILE {append}"
- "set minussign" と "set micro" (5.0.5 で初出)
- "set view azimuth <angle>" で
3 次元グラフの z 軸の方位角制御
- "save fit <filename>" で非推奨コマンド
"update" を置き換え
- 新規: terminal と terminal オプション
- terminal domterm (DomTerm 端末エミュレータで inline SVG をサポート)
- terminal sixelgd (gdlib を使用する sixel terminal グラフ)
- svg 'standalone' で参照を include するのでなく画像を埋め込む
- windows terminal でグラフをビットマップとして保存できるよう
- windows graph window を wgnuplot text window とドッキング可能に
- GDI/GDI+ に代わる windows terminal Direct2D ドライバ (可能ならば)
- Windows では wxt でグラフを EMF として保存可能に
- Windows では wxt で印刷が可能に
- dumb で ANSI カラーと多角形の塗り潰しが可能に
- 新規: 疑似ファイル '+' '++' でサンプリング区間の範囲を追加指定できるよう
- 新規: Windows 上の gnuplot
Unicode (BMP) 入力を現在の `set encoding` に変換、システムの解
像度に対応した UTF-8 を含む
- 新規: textbox スタイルで fillcolor と bordercolor をサポート
- 変更: "plot with labels" での点種を key でも表示するよう
- 変更: 3 次元グラフの軸ラベルの位置の改善
- 変更: timestamp はグラフ境界に対してでなくページに対して配置するよう
- 変更: key タイトルのフォント、拡張文字列対応を key の内容とは分離する
- 変更: margin の順番を `set margins <left>, <right>,
<bottom>, <top>` に
- 変更: 画像データを読み込んだときから x,y サイズを保存し再利用する
- 変更: STATS_* 変数のいくつかを実数 (複素数) でなく整数に
- 変更: 組み込み readline で ^R を後方検索の開始に
- 変更: 保存される点が範囲外の場合に軸の最小最大を更新するのみに
- 変更: 対数軸で自動生成される小目盛りの変更
- 変更: Windows での印刷用対話形式の改良
- 変更: 拡張文字列の { の後ろに続く空白を保持するよう
- 変更: windows terminal でより良いオーバーサンプリングを提供
- 変更: 新デフォルト "set key fixed": 3D key
ボックスをグラフの回転から守る
- 変更: フリーでない PDFlib ライブラリを使用する pdf terminal を非推奨に
- 変更: windows terminal で印刷とクリップボードへのコピーは GDI+
も使うよう
- 変更: raxis/polar grid は直交軸と共存できるように
- 変更: 浮動小数アンダーフロー時には norm(x), x**y の評価は 0 を返すよう
- 変更: space-in-x11-raises-KDE3-konsole サポートは今は
configure オプションに
- 変更: "save" の出力ディレクトリの選択で
loadpath を使わないように
- 変更: GNUTERM で terminal 名だけでなく terminal オプションも追加可能に
- 変更: 古い terminal の corel, dxf をデフォルトビルドからは削除
- 修正: cairo.trm - 印刷と拡張文字列の後で terminal フォントをリセット
- 修正: "smooth cnorm" でデータの自動縮尺
- 修正: 組み込み readline での S-JIS encoding の処理
- 修正: Windows で特別なファイル "PRN" によるプリンタへの出力
配列と極座標モードの改良、非線形軸、win terminal や wgnuplot
の改良あたりが目玉でしょうか。
全部は紹介しきれませんので、機会があれば少しずつ紹介したいと思います。
- (08/23 2017)
(しおり用)
08/16 頃に、gnuplot-5.0.7 が公開されました。
5.0.7 での新規機能、変更、修正は以下のようです。
- 新規: set term {pngcairo|pdfcairo} pointscale <factor>
- 新規: "update" の置換用に version 5.2 から
"save fit" を逆輸入
- 新規: metapost terminal でのユーザ定義 dashtype のサポート
- 変更: "update" コマンドを非推奨に (しかし削除はしてない)
- 変更: 3 次元グラフで軸座標を使用した円の配置が可能に
- 変更: "set view map" での 3 次元オブジェクト用の不正な
z 座標を無視
- 変更: 'bind "shift-Button1"' と 'bind "Button1"'
を区別するように
- 変更: 組み込みの仮 popen の代わりに Mingw-w64, MSVC popen を使用
- 変更: 疑似ファイル '+' の plot でサンプリング区間を範囲指定できるように
- 修正: 範囲制限された y2 軸がグラフを渡る対角線を不正に生成する問題
- 修正: "binary record=(a,b) ... with image" の
x/y サイズの割り当て
- 修正: hidden3d の退化した多角形が負の配列添字を生成していた問題
- 修正: "set view map" でのオブジェクトのクリッピング
- 修正: cairo terminals: textbox の境界幅を terminal の線幅に応じて変更
- 修正: canvas terminal: グラフサイズの初期化 (最初のズームに影響)
- 修正: 正常なデータがない場合に stats がクラッシュした問題
- 修正: 表出力では LaTeX の書式を使用しないように
- 修正: "plot '+' binary" の取得時の確認
- 修正: gprintf に渡す書式が NULL でないかの確認
- 修正: 入力時の画像データ構造体が空でないかのチェック
- 修正: plot の 'with table' でのより一貫した処理
- 修正: 前の fit で不正な、または空のコマンド文字列が保存されていた問題
- 修正: 対数軸での 2 次元画像が segfault していた問題
- 修正: 空のループ範囲を含む入れ子の繰り返し処理の問題
- 修正: wxt terminal 用に gtk3 を使用する 64-bit Cygwin ビルドを可能に
5.2 も RC 版が既に出ているので、近々リリースされると思います。
- (08/03 2017)
(しおり用)
前回の報告 (06/28 2017)以後、
現在の CVS 版に入れられた主な機能について紹介します
(ChangeLog, manual の更新部分等より)。
- 一般的な機能
- 5.2 で対数軸が非線形軸で実装されるのに合わせた修正 (07/31,
08/02)
- set view equal から set view map への切り替えの際の問題の修正
(07/30)
- textbox の回りの余分なスペースをサイズ比較用に無効化 (07/30)
- autoscale に関するコードの修正、vector の両端が含まれるよう
(#1947, #1709) (07/29)
- 軸範囲の最大、最小を変えずに属性を設定できるように (07/29)
- fit の内在ダミー変数 x, y, t, u, v の非数値要素を無視
(#1949) (07/27)
- 入力と出力が同じデータブロックである場合の plot を拒否
(07/24)
- fit が入力列の最初であると仮定する保存コードを修正 (#1946)
(07/22)
- plot with table の大幅な改良 (07/20)
- plot ... with table でのグラフ、表化の矛盾する処理を修正 (07/18)
- (double)abs() を fabs() で置き換え (64bit 整数サポートの準備 ?)
(07/11)
- test コマンド出力の改善 (07/08)
- 「print 0x12345678901234567890」のような大きい整数の処理の修正
(07/06)
- 環境変数 GNUTERM を内部変数 GNUTERM にコピーするように (07/05)
- 極座標での負の rrange が切り捨てられていた問題の修正 (#1370)
(07/02)
- terminal ドライバ, wgnuplot 等
- win: GDI print API に関する修正 (07/31)
- win: textbox のマージン計算を qt と同等の形に (07/31)
- wgnuplot: popen 用に Unicode サポート (07/29)
- wgnuplot: GUI 用の popen/pclose の実装を使用 (#1950) (07/29)
- win: バックエンドのデフォルトを Direct2D に (07/27)
- win: ウィンドウサイズ変更に関する改良 (07/27)
- wgnuplot: 関数のパラメータの順番に関する修正 (07/11)
- win: スクリーン出力のビットマップ化に関する改良 (07/10)
- win: GDI バックエンドのフォントの警告の抑制 (07/10)
- win: GDI+ の初期化に関する修正 (07/10)
- wgnuplot: グラフサブウィンドウの配置に関する修正 (07/09)
- win: API の最低バージョンを Windows 7 に仮定 (07/07)
- win: Direct2D の印刷をサポート (Windows 7 が必要) (07/07)
- dumb: 矢印を少し改良 (07/07)
- qt: textbox の y マージンを decender 用に少し増やす (07/06)
- qt: 位置合わせに関するコードの修正 (07/05)
- caca: set term caca driver raw での segfault の修正 (07/05)
- win: pm3d 出力などに関連するコードの修正 (07/04)
- win: 多角形の塗り潰しの合成モードと線幅に関する修正 (07/03)
- wgnuplot: 秒未満の精度を持つ time() の実装 (07/03)
- win: persist 時はドキンググラフが使えないように (07/03)
- win: 拡張文字列の回転、textbox の座標に関する修正 (06/30)
- wgnuplot: hypertext に関する 06/24 の変更の修正 (06/29)
- canvas, svg: マウスパラメータ、64bit 整数に関する修正 (06/28)
- その他
- OpenWatcom 用の GDI+, Direct2D 等のビルドのサポート (07/31)
- 存在しないディレクトリ、不要なファイルに関する修正 (07/31)
- Windows のコンパイルの高速化 (windows.h をインクルードしない)
(07/29)
- Windows 32bit ビルドで Win64 FS リダイレクションを使用しない
(#1942) (07/27)
- Windows のテストに _WIN32 のみを使用 (WIN32, _Windows を削除)
(07/24)
- 現在は snprintf() が必要なので、それがあるかのテストは削除
(07/16)
- C のソースで C++ スタイルのコメントを使用しないように (07/14)
- MingW でのコンパイルエラーに関する修正等 (#1941, #1942) (07/11)
- デモ
今回は、Windows 関係の修正、改良がかなり入っています。
一般的な機能としては、test コマンド、GNUTERM、
plot with table の改良が特徴的だと思います。
test コマンドに関しては、ドキュメントによれば以下の修正が入っています
(確認はしていません)。
- 回転文字列と矢の部分を単純化
- dump の多角形タイトルのセンタリングのバグの修正
- 評価された一般的なテキストサイズと本当の textbox 領域を比較
環境変数の GNUTERM が内部変数にコピーされると、
gnuplot 内でも「set term GNUTERM」
のような使い方ができるようになるのですが、
現在は GNUTERM は terminal 名だけでなく、
そのオプションも指定できるようになってるので、
GNUTERM="post eps color size 5in,3in"
のような場合に「set term GNUTERM」とすると
問題が起きる場合があるようです。
それで、今回「set term GNUTERM」ではその GNUTERM の先頭の単語
(terminal 名) だけを見るようにして、
GNUTERM 文字列全体を指定したい場合は
「set term @GNUTERM」とすることになりました。
そして、「unset term」は「set term GNUTERM」
と同じことを行うことになったようです
(確認はしていません)。
plot with table については、いくつかの点で改良が入っています。
まず、set table に
「{separator {comma|tab|whitespace|"<char>"}}」
のようなオプションが使えるようになり、
例えばこれに comma を指定することで、
plot with table で CSV が吐き出せるようになっています。
また、plot with table で出力される表データに
文字列も入れることができるようになりました。
そのため、従来は数値データは固定書式 (%g) だったのが、
sprintf, gprintf を明示的に指定して作成した数値
(「文字列」としての数値) を出力できるようになりました。
さらに、まだ試験段階の機能ですが、plot with table の後ろに、
「if <expression>」のように数式を付けられるようになり、
そこで using のように列番号を使えるようになっていますので、
これにより、出力のフィルタリングが可能になっています。
例 (3 列目が Red という文字列の場合にのみ出力):
plot $DATA using 1:2:($4+$5) with table if (strcol(3) eq "Red")
この機能は、現在は with table のみの実装ですが、
もしかすると他の描画スタイルに実装が広がるかもしれません
(開発者は拡張は容易だ、と言っておられるようです)。
(cf. 「情報やメモ (10/11 2017)」)
- (06/28 2017)
(しおり用)
前回の報告 (04/21 2017) 以後、
現在の CVS 版に入れられた主な機能について紹介します
(ChangeLog, manual の更新部分等より)。
- 一般的な機能
- ベッセル関数が libm にあればそちらを使うように、bes{j,y}n を追加
(06/21)
- データブロックへの出力指示フラグのリセットに関する問題の修正 (06/15)
- 初期化が怪しい変数の明示的な初期化 (#1933) (06/14)
- 対数軸描画処理速度に関する改善 (06/14)
- timelabel 文字列の内部保存方法の変更 (06/12)
- 非推奨の設定オプションを show version long の表示から削除 (06/10)
- 極座標境界に対する rrange とクリッピング処理に関する修正 (06/08)
- データブロックの行数、n 行目を配列同様 |$D|, $D[n] で得られるように
(06/05, 06/18)
- splot ... title at {begin|end} を可能に (06/05)
- LaTeX 系出力形式での gprintf の表出力では LaTeX 書式を使わないように
(#1931) (06/02)
- thru, update を完全に削除、set clabel が非推奨であることを明示 (06/01)
- terminal が未設定の場合、初期化ファイルで失敗する問題の修正 (06/01)
- fit 用の update は非推奨とし、代わりに save fit を導入 (05/19)
- shift キーを無視しない bind 'shift-Button1' を可能に (05/15)
- fit の古い update コマンドに関するドキュメント、コードの修正 (04/25)
- 新規: GPVAL_SYSTEM_ERRNO, GPVAL_SYSTEM_ERRMSG の導入
(システムエラー情報) (04/22)
- terminal ドライバ, wgnuplot 等
- dumb: カラー出力のサポートに関する問題の修正 (06/26)
- win: ダブルバッファの設定と古いオーバーサンプリングコードの削除
(06/17)
- dumb: y 格子に関する修正 (06/15)
- svg: termoption fontscale の処理を他の出力形式に合わせる、fsize を削除
(06/14)
- win: ウィンドウサイズと位置の情報に関する修正 (06/13)
- win: 極座標グリッドが小さくなりすぎないよう (06/13)
- win: フォントスケールが 2 度適用される問題の修正 (06/13)
- win: 回転文字列用のアンチエイリアスを変更 (06/13)
- win: USE_WINGDI によって GDI の変種を入れるように (06/06)
- set term で、どれが対話型であるかを表示するよう (05/30)
- post: ユーザ名を入れる Author フィールドを発行しないよう (05/30)
- wgnuplot: gnuplot の本体に現在の window ID を通知するよう (05/25)
- qt: Windows 用の名前付きパイプ用のコードに関する修正 (05/23)
- dxf をデフォルトビルドに戻す (05/22)
- win: termoption の pointscale をサポート (05/21)
- Windows 用 gnuplot に close 用イベントハンドラを追加
(#1916, #1917, #1918) (05/20)
- corel, dxf をデフォルトビルドから外す (05/18)
- terminal ドキュメントにデフォルでサポートされないものであることを記載
(bitmap terminal, legacy terminal) (05/18)
- wgnuplot: 空のフォント名処理の修正 (#1860) (05/15)
- wgnuplot: バックエンドの選択用ラジオボタンの追加 (05/14)
- wgnuplot: 問題を起こす円の描画ルーチンの削除 (#1880) (05/14)
- wgnuplot: 点種などの定義形式の変更 (05/13, 06/21)
- cairo, post: set termoption のオプション pointscale を追加 (05/07)
- canvas: 軸の幅、高さの初期化に関する修正 (#1925) (05/02)
- wgnuplot: 文字列サイズで空白を考慮していなかった問題の修正 (04/25)
- Windows でも (_w)system() の返り値を報告するよう (04/24)
- Windows ではマクロ WEXITSTATUS(error) をダミーに (04/24)
- wgnuplot: グラフ座標やメモリリーク、点記号などに関する修正 (04/23)
- wgnuplot: バックエンドとして Direct2D, DirectWrite の導入
(04/23, 05/08, 06/14, 06/18, 06/24, 06/27)
- wgnuplot: 垂直描画位置などの計算に関するの修正 (04/21)
- その他
- Windows MSVC で Unicode ビルドを可能に、gnuplot_qt 用ライブラリの追加
(06/07)
- リリースブランチを 5.2 とし、開発ブランチを 5.3 に (05/22, 06/20)
- ドキュメントに LaTeX verbatim 用の部分を書けるように (05/18)
- ドキュメントで・のリストをサポート (tex, gih, chm, hlp, texi)
(05/12, 05/14, 05/18)
- デバッグ用の変数を追加、ACTION_SHOW の呼び出しをマクロ化 (05/05)
- デモ
- probably_tux.dem: エンコーディング設定の変更 (06/07)
- stringvar.dem: 一時ファイルを使用せず $D[n] を使用するように (06/05)
- demo の make check 時に fit ログ出力をしないように (05/14)
- fit.dem: fit の update コマンドに関する修正 (04/25)
- cerf.dem, complex_trig.dem, heatmaps.dem, pm3d_lighting.dem,
rgb_variable.dem: '++' の u,v 軸への変更に伴なう修正 (04/25)
前回の報告から 2 ヶ月くらいあきましたので、
また相当に色々入っています。
5.2 リリースに向けた動きも始まりましたし、
win terminal の Direct2D, 3D を使った書き直し
(グラフィックカードがあるとかなり速いらしい) も始まっています。
GPVAL_SYSTEM_ERRNO, GPVAL_SYSTEM_ERRMSG の導入は、
Unix 系開発ユーザにはなじみが深いかもしれません。
splot ... title at {begin|end} や
データブロックに関する |$D|, $D[n] も便利かもしれません。
ベッセル関数を libm ものを使うようにするのは、
その方が精度が上がるからということのようです。
dxf (CAD データ) は、一度「遺物的 (legacy)」と評価され、
デフォルトのビルド対象リストから外されたのですが、
dxf ユーザの申し出があり復帰されたようです。
ただ、10 年以上ほとんど更新されておらず、
多分 gnuplot の新しい機能にもついていけていないので、
残すのであればある程度のメンテナンスは必要だろうと思われますが、
誰かやってくれる人は現れるでしょうか。
さて、私は最近少し gnuplot 方面の作業は怠けていて、
最新の CVS 版を試してみるのも少し先になりそうですが、
また試してみて面白いものがあれば報告したいと思います。
(cf. 「情報やメモ (08/03 2017)」)
- (06/07 2017)
(しおり用)
すみません、
「情報やメモ (03/29 2017; no.2)」
に続いてまたレーダーチャートの話です (相当しつこい)。
前回 (「情報やメモ (03/29 2017; no.2)」)
は極座標モードでレーダーチャートを描きましたが、
よく調べると以下の gnuplot の英語の書籍に、
似たような例が載っていました (13.43 Star plots)。
- Philipp .K.Janert, "Gnuplot in Action", Manning, 2010.
日本で良く見るレーダーチャートとは違い、
背景のグリッドが多角形でなく円なのですが、
その場合は polar の grid がそのまま使えるので、
私の方法などよりもかなりシンプルに描けます。
詳しくはそちらの書籍を参照してください。
さて今回は、これまで、元のデータの最後に先頭データと同じものを追加して、
閉曲線になるようにして描いていたのですが、
「最後に先頭データを追加せずに」今までと同じグラフ (閉曲線)
を描く方法を考えてみます。
グラフは、前回同様極座標モードで描きます。
方法は、2 通り考えられます。
- w lp で最後が閉じない折れ線を描いた後で、
先頭と最後を結ぶ線を、every で途中の点をスキップすることで描く
- w filledcurve closed を使用する
前者は容易に想像できると思いますが、後者は少しトリッキーです。
with filledcurve は、
通常は 2 つの曲線の間などを塗り潰すための描画スタイルですが、
closed オプションを使うと、
閉じていない曲線の先頭と最後を結んだ閉曲線を作ってくれて、
その中身を塗り潰してくれます。
その「塗り潰す」ための fillstyle で塗り潰さないようなオプション指定、
例えば「fillstyle transparent solid 0」を行い、
border オプションを指定すれば閉曲線のみを描くようになります。
なお、「fillstyle empty」ではだめでした。
ただし、その先頭と最後を結んでくれるのは、ブロック単位で結ぶのではなく、
入力データの先頭と最後を結ぶ仕組みになっているので、
every で使用するブロックのみ取り出す必要があります。
また、このようにすると、key のところのサンプルには線ではなく
枠が表示されてしまうので、そこをごまかす必要がありますし、
w lp と同じ表示にするには、w p で点も別に描かなければいけません。
よって、意外に簡単ではありません。
では以下にサンプルを示します。
まずは every バージョンから。
# データをインラインデータとして定義 (5.X 以降)
$data << EOD
科目 Aさん Bさん Cさん
国語 70 40 90
社会 80 20 90
理科 60 90 90
算数 50 90 90
英語 90 70 90
EOD
stats $data using 2 nooutput
N = STATS_records # 科目数
set size square
set polar
unset xtics
unset ytics
set rrange [0:120]
unset raxis
unset rtics
theta(j) = 0.5*pi-(j-1)*2*pi/N # 軸の角度を与える関数
# 軸の描画
set for [j=1:N] \
arrow j from 0,0 to 100*cos(theta(j)),100*sin(theta(j)) lt 0 dt 1
# 軸の刻み
set for [j=0:100:20] label sprintf("%d",j) at 5,j
# 以下がグラフ
# (1) 最初の plot はグリッド (点線の正 N 角形)
# (2) 次は各科目名を出力 (strcol(1))
# (3) 各人のグラフ (閉じてない)
# (4) それを閉曲線に
# (5) 最後は平均値 (閉じてない)
# (6) それを閉曲線に
plot \
for [j=20:100:20] $data using (theta($0)):(j) not w l lt 0 dt 1,\
$data using (theta($0+1)):(110):(strcol(1)) every ::1::N not w labels ,\
for [j=2:4] $data using (theta($0+1)):j t columnhead(j) w lp lt j pt j+2,\
for [j=2:4] $data every (N-1)::1 using (theta((N-1)*$0+1)):j \
not w lp lt j pt j+2,\
$data using (theta($0)):(($2+$3+$4)/3.0) t "平均値" w lp lt -1,\
$data every (N-1)::1 using (theta((N-1)*$0+1)):(($2+$3+$4)/3.0) \
not w lp lt -1
- 上のスクリプトの出力 (gnuplot-5.0.6 wxt terminal
のスクリーンショット)
グラフは前回と同じものが生成されていることがわかると思います。
前回のものに比べて、閉曲線にするための
plot が 2 つ追加されていることがわかると思いますが、
そこでは「every (N-1)::1」で (N-1) 毎のデータを使用する指定により
先頭のデータと最後のデータのみを結ぶようにしています。
しかも、every の指定により $0 の値が「行番号」ではなく
「every で取り出した行の番号」になってしまうため、
「theta($0+1)」も「theta((N-1)*$0+1))」のように変更する必要があります
(+1 は先頭行の読みとばし用)。
次は filledcurve 版ですが、plot の手前までは上と共通なので、
plot 部分のみ示します。
# 以下がグラフ
# (1) 最初の plot はグリッド (点線の正 N 角形)
# (2) 次は各科目名を出力 (strcol(1))
# (3) 次は各人のグラフの線を出力
# (4) 次は各人のグラフの点を出力
# (5) 次は各人のグラフの key を出力
# (6) 次は平均値の線を出力
# (7) 次は平均値の key を出力
#
plot \
for [j=20:100:20] $data using (theta($0)):(j) not w l lt 0 dt 1,\
$data using (theta($0+1)):(110):(strcol(1)) every ::1::N not w labels ,\
for [j=2:4] $data using (theta($0)):j not \
w filledc c fs transparent solid 0 border lt j,\
for [j=2:4] $data using (theta($0)):j not w p lt j pt j+2,\
for [j=2:4] $data using (theta($0+1)):(1/0) t columnhead(j) \
w lp lt j pt j+2,\
$data every ::1::N using (theta($0+1)):(($2+$3+$4)/3.0) not \
w filledc c fs transparent solid 0 border lt -1,\
$data using (theta($0)):(1/0) t "平均値" w lp lt -1
- 上のスクリプトの出力 (CVS 版 gnuplot wxt terminal
のスクリーンショット)
これもグラフは同じものができますが、スクリプトは少々厄介です。
3 つ目の plot が filledcurve closed (省略形 filledc c)
による閉曲線です。この場合は key を描かない (not) ようにしているため、
先頭列を使わない (数値でないと無視される) ので、
行番号のところは theta($0+1) ではなく theta($0) になります。
4 つ目の plot は同じく not で w p で点のみを描き、
5 つ目の plot で、(1/0) を使って t columnhead(j) w lp で
key のみを作っています。ここは columnhead() を使うので、
theta($0+1) になります。
6 つ目、7 つ目の平均値でもほぼ同様の作業を行いますが、
lt -1 では点 (point) がそもそも出ないので、w p は省略しています。
なお、この filledcurve 版のサンプル画像は
開発版 (CVS 版) の gnuplot で描いたものですが、
この filledcurve 版を gnuplot-5.0.6 で描くと、
以下のようになってしまいます。
- 上のスクリプトの出力 (gnuplot-5.0.6 wxt terminal
のスクリーンショット)
見てわかるように、こちらはレーダーチャートが閉曲線にならず、
つまり gnuplot-5.0.6 では filledcurve 版はうまくいきません。
元々 filledcurve closed は、閉曲線に対する機能で、
先頭と最後の点を結ぶ、ということまではマニュアルにも書かれていませんので、
うまくいかなくてもある意味では当然で、
gnuplot-5.0.6 のバグではありません。
ただし CVS 版では 2016-08-16 より、
閉じていない曲線の場合は境界線 (border)
も先頭と最後を結ぶ閉曲線が描かれるようになっています。
(cf. 「情報やメモ (08/07 2019)」,
「情報やメモ (04/06 2021)」)
- (05/12 2017)
(しおり用)
既にどこかに書いてありそうですが (どこかで見たような気もします)、
簡単な知識を 2 つ紹介します。
いずれも、最近使っていてふと気がついた (忘れていたか知らなかった)
ものです。
- 複素数値を返す自作関数の定義
gnuplot は複素数も使うことができて、a+bi を「{a, b}」のように
表現します。
自作の関数でも「f({3,2})」のようにして
変数に複素数値を与えることは可能ですが、
自作の関数で複素数値を返すような関数を作ろうとして、
例えば複素数 z の共役を返す関数 conj(z) を
conj(z) = { real(z), -imag(z) }
のように定義すると、「invalid expression」と言われエラーとなります。
それは、どうやら { } が別の意味で使われるからのようです。
では、自作の関数で複素数値を返す関数を作るにはどうすればいいかというと、
{ } を関数定義の外側を囲むようには使わないようにすればいいようです。
i = { 0, 1 } # 虚数単位の定義
conj(z) = real(z) - imag(z)*i
このようにすれば、ちゃんと複素数値を返す関数が定義でき、
「print conj({2,3})」で「{2.0, -3.0}」のように表示されます。
また、このようにして虚数単位 i を定義しておけば
gnuplot 特有の複素数表現である { } の書式を使わずに済むので、
その後の式も書きやすい、見やすい、というメリットがあると思います。
- 任意の場所への点の描画
現在の gnuplot では、関数やデータのグラフとは別に、
set arrow を使えばベクトルや線分、
set label で文字列、set object で円や楕円の一部や長方形、
多角形などを、任意の場所に配置できます。
一方で、それらの図形とは別に gnuplot の関数やデータ描画の
with points では色んな種類の点の記号を打つこともできます
(terminal 依存)。
これを set arrow などと同様に任意の場所に打つにはどうしたらいいかと
ふと考えました。
その目的のためにわざわざ数点しか持たないデータを用意するのもなんだし、
インラインデータで提供するとそれには変数や数式の値は利用できないし、
どうしたらいいかなと思ったのですが、
ソースとドキュメントを良く見たら、
set label は文字列だけではなく点も打つことができ、
しかもその点の属性が変えられることに気がつきました
(かなり前からの仕様)。よって、例えば
set label 1 "" at 0.5*pi, 1 point pt 7 ps 2 lc 4
set label 2 "" at 1.5*pi, -1 point pt 7 ps 2 lc 5
plot sin(x)
のようにすれば、y=sin(x) のグラフの極大、極小のところに
ラベルの代わりに点 (pt7 の塗り潰しの丸) だけを書くことができます。
そういう意味では set label は「set labelpoints」
と呼んでもいいくらいのように思います、
実は gnuplot のソース内では set label は実際にそういった名前
「LABELPOINTS」で処理されています。
- (04/21 2017)
(しおり用)
前回の報告 (03/29 2017)以後、
現在の CVS 版に入れられた主な機能について紹介します
(ChangeLog, manual の更新部分等より)。
- 一般的な機能
- textbox に linewidth 属性を追加し出力形式によってスケールするように
(#1825) (04/19)
- set view map での object のクリッピング処理に関する修正 (04/18)
- 構文解析処理のための関数の追加 (04/18)
- z が対数軸の場合に set view map が行われない問題の修正 (04/18)
- 円、楕円の配置に関するエラーメッセージの修正 (04/18)
- 3D の円用に polar (円柱) 座標を可能に (04/11)
- 「GNUTERM="wxt size 500,500"」
のように GNUTERM でオプション指定も可能なように (04/10)
- 3D で円をスクリーン座標以外に軸の座標を使って書くことを可能に (04/10)
- 3D 用の新変数: GPVAL_VIEW_XCENT, GPVAL_VIEW_YCENT, GPVAL_VIEW_RADIUS
(04/10)
- 出力ディレクトリの選択に loadpath を使用しないように (04/03)
- GPVAL_PWD の文字列と現在の作業ディレクトリの有効性に関する修正 (04/02)
- '+' と同様に '++' の名前付きサンプリング変数処理の追加 (03/31)
- 「set xyplane at 0; set log z; splot ...」が描画なしになる問題の修正
(03/31)
- 色軸のマクロに関する修正 (03/29)
- 非線形軸の最大最小の値の保存、利用に関するコードの改良 (03/29)
- terminal ドライバ, wgnuplot 等
- caca: コンパイラが警告を出す部分を修正 (04/19)
- wgnuplot: 文字列の範囲処理用に一般的な書式を使用するように (04/19)
- qt: space でコンソールを前面に出すのは MSWin のみであることを明確化
(04/01)
- その他
- 複数のバージョンの Lua がある環境 (Ubuntu 等) に対する対応 (04/19)
- 特権に関する失敗でエラー終了するように (Linux) (04/01)
- デモ
- clipobject.dem: set view map での object のサンプルの追加 (04/19)
- armillary.dem: 3D に軸座標で円を書くサンプル (04/10)
- sampling.dem: 3 次元での名前付きサンプリング変数の例を追加 (03/31)
- sampling.dem: 非線形軸の最大最小処理の修正に関連する変更 (03/29)
今回も色々修正などが入っていますが、あまり大きなものはなさそうです。
GNUTERM は私は普段使っていませんが、
オプションが追加指定できるようになったのは、
もしかすると少し便利なんでしょうか。
また、splot グラフの中に円を書いたり、
polar 指定したりする機能とその周辺の整備が追加されていますが、
ちょっと想像しにくいかもしれません
(少なくとも私はよくわかりませんでした)。
以下の armillary.dem というものが追加されていますので、
それを見るとやりたいことが少しわかるかもしれません。
その他には、いくつかの環境用の対策などが多少入っているようです。
(「情報やメモ (06/28 2017)」)
- (03/29 2017; no.2)
(しおり用)
すみません、
「情報やメモ (01/29 2008)」、
「情報やメモ (01/29 2015)」
に続いてまたレーダーチャートの話です (割としつこい)。
実はその 2 回では、いずれも極座標モード (set polar) を使わずに、
自前で極座標を生成して書いていたのですが、
set polar を使ったらどうかと試してみたら意外に簡単に書けたので、
ここで報告します。
なお、以下では gnuplot-5.0 以降の機能を使いますが、
実質的には 4.6 位でも書けると思います。
set polar で with lines を使えば、
基本的なレーダーチャートのグラフは書けます。
あとは軸とかラベルを適当に追加していくだけです。
なお、以前書いたレーダーチャートは
12 時の場所から反時計回りに書いていたのですが、
それを今回は通常のように時計回りに書くことにします。
# データをインラインデータとして定義 (5.X 以降)
# レーダーを閉じるために先頭データを最後に追加する
$data << EOD
科目 Aさん Bさん Cさん
国語 70 40 90
社会 80 20 90
理科 60 90 90
算数 50 90 90
英語 90 70 90
国語 70 40 90
EOD
stats $data using 2 nooutput
N = STATS_records - 1 # 実質的なデータ個数 (科目数)
set size square
set polar
unset xtics
unset ytics
set rrange [0:120]
unset raxis
unset rtics
theta(j) = 0.5*pi-(j-1)*2*pi/N # 軸の角度を与える関数
# 軸の描画
set for [j=1:N] \
arrow j from 0,0 to 100*cos(theta(j)),100*sin(theta(j)) lt 0 dt 1
# 軸の刻み
set for [j=0:100:20] label sprintf("%d",j) at 5,j
# 以下がグラフ
# (1) 最初の plot はグリッド (点線の正 N 角形)
# (2) 次は各科目を出力 (strcol(1))
# (3) 次はレーダーチャート本体
# (4) 最後は平均値
plot \
for [j=20:100:20] $data using (theta($0)):(j) not w l lt 0 dt 1,\
$data using (theta($0+1)):(110):(strcol(1)) every ::1::N not w labels ,\
for [j=2:4] $data using (theta($0+1)):j t columnhead(j) w lp lt j pt j+2,\
$data using (theta($0)):(($2+$3+$4)/3.0) t "平均値" w lp lt -1
- 上のスクリプトの出力 (gnuplot-5.0.6 wxt terminal
のスクリーンショット)
前のものよりもかなり簡単であることがわかると思いますが、
いくつか注意を書きます。
- 今回はデータを awk で変換せず、
最初から転置して最初のデータを下に追加したものを使っています。
もちろん前のデータを利用してもいいです
(4.6 等では名前付きインラインデータが使えないのでそうする必要がある)。
- 科目数は今回は stats で計算しました。
なお、N はデータの行数から 2 でなく 1 を引いていますが、
これは普通に stats using 2 で調べると、
先頭の「Aさん」の行は数値でないため STATS_records
の行数にカウントされないためです。
- theta(j) が各軸に対応する角度 (ラジアン) を求める関数です。
j=1 が 12 時の角に対応します。
- 極座標モード時でも、
set arrow, set label に指定する座標は極座標ではなく
xy 座標のようなので (少なくとも gnuplot-5.0.6 までは)、
必要ならば自前で cos(), sin() で x,y 座標を計算する必要があります
(ただし、set arrow は to でなく length, angle 指定を使えば、
多少極座標らしく書けるが、angle はラジアンでなく常に度)。
- plot の最初は背景の多角形の表示を「for [j=20:100:20]」で行っています。
これは「$data」は行数しか使用しません。
- plot の 2 つ目は科目名の表示で、with labels で、
データの 1 列目 (strcol(1)) を使って表示しています。
なお、strcol(1) でデータを探索する場合、
データの 1 行目自体 (「科目」) も無視されないため、
every を使って 1 行目を捨てる必要があります。
しかし、その場合 every で最初に取得した行の $0 が 0 となるので、
「国語」の行は $0 = 0 となります。
よって、それを 12 時の場所にするためにはθ座標は
「theta($0)」ではなく「theta($0+1)」とする必要があります。
- plot の 3 つ目はレーダーチャート本体の表示で、
key のタイトルは columnhead(j) で取得しています。
しかし、この columnhead(j) を使用すると、
数値データは 2 行目から始まるとみなされるため、
2 行目の国語のデータの $0 がやはり $0 = 0 となります。
よって、θ座標は「theta($0+1)」とします。
- 最後の plot は平均値ですが、
これは 3 つ目と違い columnhead() を使用していません。
よって、「科目」の行が $0 = 0、国語の行は $0 = 1 となりますので、
θ座標は「theta($0)」です。
少し $0 の変化が微妙ですが、実質的には前よりもかなり楽ですので、
レーダーチャートは極座標モードで書く方がよさそうです。
(「情報やメモ (06/07 2017)」,
「情報やメモ (04/06 2021)」)
- (03/29 2017)
(しおり用)
前回の報告 (02/23 2017)以後、
現在の CVS 版に入れられた主な機能について紹介します
(ChangeLog, manual の更新部分等より)。
- 一般的な機能
- 疑似ファイル '++' のサンプリングを x,y 軸から u,v 軸に変更 (03/26)
- 2 曲線間領域塗り潰しアルゴリズムの改善 (03/20)
- y2 軸の範囲の限界の描画方向に関する問題の修正 (#1921) (03/19)
- plot の配列名描画の次に '' とした場合に配列を取得できるよう (03/16)
- set table で指定するファイル名のチルダ展開をサポート (03/16)
- bins の改良: binrange のデフォルト値、binwidth の新規追加等 (03/16)
- set jitter で作られるオフセット値を 2D の impulses にも適用 (03/13)
- palette 不使用の場合に cbrange のチェックを強制しない (#1920) (03/08)
- plot with table で y 軸範囲が未定義なことに伴う問題の修正 (03/05)
- parallel の構造体の初期化に関する問題の修正 (03/05)
- set dummy に配列名を不許可に (03/05)
- デモ集合のチェックで見つかった様々な問題の修正 (03/05)
- 異常な exit に対する警告メッセージの明確化 (#1913) (02/27)
- smooth に対する未定義値、範囲外値の取り扱いに関する修正 (#1911)
(02/24)
- terminal ドライバ, wgnuplot 等
- qt: グラフの表示/非表示の状態のリセットに関する修正 (03/01)
- wxt: Solaris 10 での名前の衝突の問題の修正 (#1914) (02/27)
- wgnuplot: caca terminal 出力をコンソールウィンドウに出すよう
(#1912) (02/23)
- wgnuplot: wgnuplot テキストウィンドウにバイナリデータが出ないよう
(#1912) (02/23)
- その他
- configure で stats コマンドの可/不可のコメントが逆だった (03/16)
- ヘルプに bins の「試験段階」を復帰 (binrange の検討用) (03/10)
- デモ
- bins.dem, random.dem: bin の改良に伴う修正 (03/16)
- surface1.dem: replot を明示的な表示 (状態のリセット用) (03/02)
- すべてのデモを「pause -1 ; reset」で終え、必要なら utf8 をセット
(02/23)
今回はバグやチェックなどの修正が主です。
新規機能は bins の binwidth オプション位でしょうか。
(cf. 「情報やメモ (04/21 2017)」)
- (03/21 2017)
(しおり用)
03/18 頃に、gnuplot-5.0.6 が公開されました。
5.0.6 での新規機能、変更、修正は以下のようです。
- 新規: gprintf の %c でエンコーディング固有の文字を使用する 'set micro'
- 新規: 不正データを欠損データと扱う 'set datafile missing NaN'
- 新規: 開発版で更新された svg/domterm 出力形式の導入
- 変更: 入れ子の iteration の開始値、終値を動的に再評価するように
- 変更: x2tics 出力時に x2label と plot title の位置合わせの改正
- 変更: フリーでない PDF 出力ドライバを非推奨に (5.2 では削除予定)
- 変更: gdlib 出力ドライバの非整数フォントサイズ指定を可能に
- 変更: r 軸の逆向きを不許可に (5.1 から導入されていない)
- 変更: 'with lp' の pointinterval 属性を plot 同様 splot でも可能に
- 変更: aquaterm, qt, wxt の terminal オプションでの
"linewidth <lw>" 指定
- 変更: xrange の外の spline 弧をエラーでなく無視するように
- 修正: "binary record=(a,b) ... with image" の x/y 成分の割当
- 修正: wxt - リサイズ時の multithread wxt の問題 (mutex ロックの問題)
- 修正: windows - 時間指定 pause が 1 秒未満の場合しか動かなかった問題
- 修正: 隠線処理時に境界と格子線の前後のレイヤに不正があった問題
- 修正: "set pm3d depthorder interpolate N,M"
でのメモリ確保の問題
- 修正: aquaterm で拡張文字列処理を無効にすることができなかった問題
- 修正: save, show で "lt -1"
に対する線の線色に対応していなかった問題
- 修正: "missing" フラグを "using ($n)" を
"using n" と同じに与えるように
- 修正: エラー時の中括弧内での行番号の報告に関する問題
- 修正: gnuplot_x11: いくつか見られる use-after-free エラーの可能性
- 修正: splot with dots での隠線処理に関する構造体の初期化
- 修正: 隠線処理モードでの arrow の矢先の処理
- 修正: バイナリデータ入力時の関数評価での NaN 値の処理
- 修正: 隠線処理グラフの隠れる/見えるの状態を 3D 回転で破壊しないよう
今回は新規機能は少ないですが、変更、修正が割と入っています。
5.2 に対する準備も始まっているような感じですね。
- (03/16 2017)
(しおり用)
現在の gnuplot には、do for や plot for, set for
などの繰り返し機能がありますが、
少し気がついたことを備忘録代わりに書いておきます。
この for の使い方は、ヘルプによれば 2 種類あります。
- for [<変数名> = <開始値> : <終了値> {:<増分>}]
- for [<変数名> in "単語の並び"]
前者は増分形式のもので、例えば「for [n=3:9:2]」とすると、
n = 3, 5, 7, 9 に対してその後の部分が実行される、というもので、
後者は例えば「for [s in "dog cat mouse"]」とすると、
s = "dog", "cat", "mouse" に対して
その後の部分が実行される、というものです。
注意が必要なのは、前者の場合 n は「整数変数」、
s は「文字列変数」になることです。
だから、0.5 の増分の for を使おうと思って
「for [x=1.5:4.0:0.5]」とすることはできませんし、
規則的でない値に対する繰り返しをしようと思って
「for [x in "1.3 2.5 3.1 2.7 6.3"]」とすると
x の最初の値は "1.3" という文字列であり、
1.3 という実数ではありません。
では、例えば実数を増分とするにはどうするかというと、
それは計算式を使って、例えば「for [x=1.5:4.0:0.5]」であれば、
「for [j=3:8]」として、
使う式の中で x の代わりに j*0.5 を使えばいいわけです。
また、規則的でない値に対する繰り返しですが、
それは gnuplot の自動変換を使います。
gnuplot では数値を表す文字列は、
それが数式の中で使われた場合には自動的に数値に変換されて評価されます。
よって、
「for [x in "1 3 8 9"]」のような場合も、
x が数式の中に出てくるならそれはそのまま正しく評価されますし、
column() の引数などに使う場合は column(x) とするとエラーになりますが
(正確には x の文字列を先頭行に持つ列を探すことになります)、
その代わりに column(x + 0) とすれば正しく評価されます。
- (02/23 2017; no.2)
(しおり用)
先日あるグラフを gnuplot で書いて、eps ファイルとして出力し、
それを LaTeX の文書に貼り込んだのですが、
グラフの周囲の余白が多かったので、
それをカット (クリッピング) しようと思ってやった作業について、
備忘録も兼ねてここにまとめておきます。
LaTeX の graphix package の \includegraphics 命令にも、
クリッピング用のオプション clip がありますが、
これは BoundingBox をベースにクリッピングをするようで、
よって EPS ファイルの BoundingBox の内部に余白がある場合は
それでは余白を削除できません。
その場合は、例えば
- EPS ファイルを編集して BoundingBox を小さくして
論理的に余白を小さくしたものを作って、
\includegraphics の clip オプションを使用する
- gnuplot 側で余白が小さくなるように調整する
の 2 通りの方法があります。
前者は、手動で試しながら BoundigBox を調整する手もありますが、
ghostscript の bbox device を使って余白を取り除いた BoundigBox
を計算させる (gs -sDEVICE=bbox file.eps)、という方法もあります。
今回は、後者の gnuplot 側での調整について書きます。
ちなみに今回書いたグラフは以下のようなものです。
- 余白のある EPS 画像
半円グラフを綺麗に書くために「set size ratio 0.5」を使用していますが、
見てわかる通り上下にかなり余白があり、左端にも多少余白があります。
これはもちろん「set size ratio 0.5」を指定しているためです。
また、key を set key out で右端に出るようにしています。
gnuplot で EPS の余白を調整する場合、使うのは以下のコマンドです。
- set term post eps の size オプション
- set *margin オプション
lmargin がグラフの左枠とキャンバスの左端 (BoundingBox) の余白 (left)、
tmargin が上端 (top)、rmargin が右端 (right)、bmargin が下端 (bottom)、
を表します。
ここで指定した margin 幅の中にグラフの外の要素、
例えば set title のタイトル (グラフの上)、
軸のラベルや刻みラベル (通常左と下)、
set key out した場合の key などが書かれますので、
その幅は確保する必要があります。
例えば、「set lmargin 0」とするとグラフの左枠が左端にくっついて、
縦軸の数字が消えてしまいます。
- set lmargin 0 のグラフ
最初のグラフと比較すると、右の余白部分は変更せず、
またグラフ部分が少し拡大していることがわかると思います。
右の余白は key の部分が自動計算されるため最初のものと同じで、
また左の余白を減らしたため横幅として使える領域が増え、
それでその分がグラフが拡大されてるわけです。
では「set lmargin 0; set tmargin 0」とすると
グラフの上の枠も上の端につくかというとそうではありません。
- set lmargin 0; set tmargin 0 のグラフ
その原因は「set size ratio 0.5」にあり、
「set size ratio 0.5」を取り除けば
確かにグラフの上の枠が上の端につきますが、
縦と横の縮尺が変わってしまい円が楕円になってしまいます。
- set size ratio 0.5 を取った場合 (lmargin=0, tmargin=0)
つまり、3 つ目のグラフの上に相変わらず余白が残るのは、
「set size ratio 0.5」の場合は、グラフの縦横比が固定されてしまうため、
画像全体 (BoundingBox) の縦横比とグラフの縦横比が違う場合は
どうしても余白が縦か横のどちらかに余ることになりますが、
それを gnuplot は自動的に 2 つに分けて両端にそれをつけていて、
それは set tmargin の通常の指定では
ある程度しか制御できないようになっているようです。
通常「set *margin」は「set *margin [数値]」を指定しますが、
数値は単位を指定しなければ文字幅/文字高さ単位になります。
しかし「set *margin」にはもう一つの指定書式があり、
「set *margin at screen [数値]」という指定方法があります。
この場合は、余白の幅を指定するのではなく、
グラフの枠の位置を直接スクリーン座標、
すなわちキャンバスの割合で指定します。上の枠を上端につける場合は
「set tmargin at screen 1」とします。
- set lmargin 0; set tmargin at screen 1 の場合
なお、「set lmargin at screen 0」と「set rmargin at screen 1」
を指定すると、左右の枠が左右の端につきますが、
「set size ratio 0.5」の状態では、
「set bmargin at screen 0」と「set tmargin at screen 1」
とすると、同時にキャンバスの端につけてしまうと
グラフの左右がキャンバスの枠を越えてしまうのでそれはできず、
その場合は指定順に関係なく bmargin の方が優先されて下につきます
(少なくとも gnuplot-5.0.5 では)。
縦が長い場合は lmargin と rmargin では指定順に関係なく
lmargin の方が優先のようです。
つまり、「set size ratio 0.5」の状態では上下の余白は
「set *margin」だけでは完全に削除することはできず、
キャンバスサイズを変更する必要があることがわかります。
マニュアルによれば、
set term post eps ではデフォルトのキャンバスサイズは 5 x 3.5 インチ、
すなわち 10:7 の比率になっています。
これを、例えば 5 x 2.5 インチにしたい場合は、
「set term post eps size 5,2.5」とします (post の場合、
size の単位は無指定ならインチ、cm もつけられる)。
あとは試行錯誤で数値を決めていけばいいのですが、
横長の場合、set key out の場合は、set rmargin も適切に設定しないと
key とグラフの右枠との間が多少開いてその分グラフが少し小さいものになります。
- set term の size 指定 (5,2.5) と set lmargin (4), set tmargin (0.87)
を指定して set rmargin を指定しない場合
下の余白も多少あるので、もう少しグラフを拡大することは可能そうです。
そこで「set rmarigin 13」も追加した最終的なグラフが以下のものです。
上のグラフとの差はわずかですが、key とグラフの右端の間隔が少し縮まり、
グラフが少しだけ拡大されていることがわかるでしょうか。
「13」は key の出力の分を考えたサイズになっています。
小さくしすぎるとグラフと重なってしまいます。
- 「set rmargin 13」を追加指定した最終的なグラフ
gnuplot のヘルプファイルの「set margin」のところには例による説明もなく、
set multiplot に関する説明も混ざっていて、
少し不親切でわかりにくいかもしれません。
今回の例がその説明のサンプルの一つになればと思います。
なお、この例でわかると思いますが、現在の gnuplot では
set margin によりグラフの枠の位置を
キャンバスの特定の位置に完全に固定することが可能です。
これは、multiplot で複数のグラフを重ねたり、
自動的に多数のグラフを生成させたりしたい場合には
有用かもしれません。
- (02/23 2017)
(しおり用)
前回の報告 (02/09 2017)
では、現在の CVS 版に入れられた主な機能について、
2016 年末までのものを紹介しましたが、
2017 年に入ってからのものを今回は紹介します。
(ChangeLog, manual の更新部分等より)。
- 一般的な機能
- smooth bins の「試験的」を外す (02/19)
- バイナリデータの UNDEFINED に関する問題の修正 (#1911) (02/19)
- hidden3d モードでの裏表の線種のリザーブに関する修正 (02/16)
- arrowhead の属性の設定と hidden3d の関係に関する修正 (#1492) (02/15)
- 新規コマンド set theta (極座標の角の原点と回転方向の制御) (02/14)
- set term, set termoption で linewidth を受けつけるように (02/09)
- key title でも write_label() を使うように (02/07)
- 陰線処理変数の splot with dots の際の初期化の問題の修正 (#1904) (02/07)
- plot の sample 変数のスコープをその中に制限 (#1755) (02/06)
- iteration 変数のスコープをその中に制限 (#1891) (02/04)
- 新規キーワード pointnumber|pn (pi に似ているが総数指定) (02/01)
- pointinterval 属性を splot w lp, hidden3d でも適用 (02/01)
- fseek と入力ストリームに関連するエラーメッセージ等の修正 (#1901)
(01/26)
- set degreesign の Windows, UTF-8 encode に関する修正 (01/24)
- label z の値を文字色だけでなく点色の方にも保持するように (#1897)
(01/22)
- set datafile missing NaN オプションの追加 (#1896) (01/21)
- 欠損データと using N, using ($N) の version 5 での違いに関する修正
(#1896) (01/21)
- lt -1 の線色の save, show で失敗していた問題の修正 (01/18)
- set border polar (外円周) の新設 (01/18)
- 極座標格子の動径線に関するコードの改善 (01/17)
- 位置指定に polar キーワードを新設 (01/15)
- 極座標と x,y 座標の変換の改善 (特に対数軸の場合) (01/13)
- reset で ttics の回転等もリセットするように (01/12)
- r 軸上の軸ラベル set rlabel の新設 (極座標モードに関わらず) (01/10)
- 極座標モードで逆向き r 軸範囲のサポート (天球地平座標用) (#1880) (01/10)
- 極座標モード時の負の値に対する処理の改良 (#1892) (01/08)
- rrange に関する範囲のチェックに関する改良 (01/08)
- plot ... title .. at end に {left|right} キーワードを追加 (01/08)
- ttic ラベル用に十分なスペースの確保 (#1892) (01/08)
- tics, ticlabel を [0:360] 外の角指定にも対応 (01/08)
- set ttics rotate の回転、θ軸範囲を [-180:180] にもできるよう (01/06)
- X**Y の評価で ISOC99 マクロ fpclassify() があれば使うように (#1877)
(01/01)
- norm(x) が x<-38 で underflow になる問題の修正 (#1877) (01/01)
- 軸の save/show の書式の整備、show auto の問題 (2D/3D) の修正 (01/01)
- terminal ドライバ, wgnuplot 等
- svg: 外部リンクでなく埋め込みイメージの生成をデフォルトに (#1801)
(02/19)
- canvas/svg: set theta <origin> <sense>
のマウス動作のサポート (02/17)
- win: docked モードの切替に関する初期化の問題の修正 (02/15)
- qt/aqua: set term ... linewidth を他の出力形式に近い形に (02/10)
- qt: Qt4 に関する情報は Qt4 でビルドしたときだけ出力するよう (#1905)
(02/09)
- x11: use-after-free segmentation error に関する修正 (#1866) (02/03)
- wgnuplot: opendir 等に関する修正 (01/29)
- wgnuplot: 現在の内部エンコーディングを知る新しい関数の追加 (01/28)
- canvas/svg: ハイパーテキストとクリック出力位置の改善 (01/24)
- canvas/svg: マウス操作の逆向き r 軸サポート (01/24)
- win: GDI+ の場合はデフォルトで EMF+ に (01/24)
- win: EMF のサイズ、クリップボードへのコピーなどの修正 (01/24)
- pslatex: cairolatex では PostScript コメントを出力しないよう (#1898)
(01/23)
- win: コードの整理 (01/20, 01/21)
- win: MSVC 2010 (と OpenWatcom) をサポートするコードに (01/07)
- win: ドッキングモード set term win docked を新設 (01/06)
- wgnuplot: テキストウィンドウにバイナリデータを出力させないよう (01/04)
- wgnuplot: pause の際 pause メッセージボックスを上げるように (01/04)
- aqua: 拡張文字列処理を回避できなかった問題の修正 (01/02)
- qt: 印刷機能のページ範囲機能の無効等の修正 (01/01)
- その他
- Windows 用ドキュメントでフォント、フォントサイズを変更 (02/16)
- MingW で警告フラグ用の変数を Makefile に追加 (02/15)
- zip 同様 7-zip によるパッケージを作るターゲットを追加 (02/15)
- glib version 2.28 を configure で check するよう (02/09)
- MSYS2/Mingw-w64 環境で pkg-config をオプションで使用するよう (01/29)
- OpenWatcom 用の Windows バイナリ作成環境、コードの修正
(01/25, 01/29, 02/15)
- clang 用の修正 (数値比較部分) (01/23)
- Windows の非 Unicode 環境でコンパイルできるように (01/21, 01/29)
- gnuplot.doc の binary 用キーワードに関する改良 (01/03)
- デモ
- ttics.dem, solar_path.dem: set theta による変更 (02/14)
- boxclusters.dem: with boxes によるヒストグラムデモ (02/03)
- solar_{path,params}.dem: set border polar の追加 (01/19)
- ttics.dem: set border polar, set ttics roate 等の追加 (01/19)
- solar_{path,params}.dem: 逆向き rrange による天体デモ (01/10)
- ttics.dem: ttics の改良に伴う修正、追加 (01/06, 01/08)
- stringvar.dem: Windows に特化したコードを追加 (01/04)
- mgr.dem, smooth_splines.dem, errorbars.dem:
mgr.dem を spline smoothing 用と errorbars 用のに分割 (01/03)
これも既にかなり大量になっていますが、
新規機能などもだいぶ入っています。
以下は新規の機能や、新たにできることです。
- win: ドッキングモード set term win docked を新設 (01/06)
- set ttics 回りの多くの改良 (01/06, 01/08, 01/12)
- plot ... title .. at end に {left|right} キーワードを追加 (01/08)
- 極座標モードで逆向き r 軸範囲のサポート (天球地平座標用) (01/10)
- r 軸上の軸ラベル set rlabel の新設 (極座標モードに関わらず) (01/10)
- 位置指定に polar キーワードを新設 (01/15)
- set border polar (外円周) の新設 (01/18)
- set datafile missing NaN オプションの追加 (01/21)
- canvas/svg: マウス操作の逆向き r 軸サポート (01/24)
- pointinterval 属性を splot w lp, hidden3d でも適用 (02/01)
- 新規キーワード pointnumber|pn (pi に似ているが総数指定) (02/01)
- iteration 変数, plot のサンプル変数のスコープを局所化 (02/04, 02/06)
- set term, set termoption で linewidth を受けつけるように (02/09)
- 新規コマンド set theta (極座標の角の原点と回転方向の制御) (02/14)
- canvas/svg: set theta <origin> <sense> のマウス動作のサポート
(02/17)
今回は、今も続いていますが、
特に極座標に関連する修正が多かったように思います。
set theta や、位置指定の polar キーワード、r 軸範囲の逆向きなどは、
今までも工夫をすれば特に必要はなかった機能だと思いますが、
その手の trick が必要なくなる点でいい機能だと思います。
set theta は set object の circle や
with circle などにも適用されると、
円グラフが多少楽に書けるようになるので、
なんだったら後で提案してみようかと思います。
pointnumber も、実際には pointinterval より必要になるケースは
多いかもしれません。
Windows のドッキングモード (英語では docked mode) は、
タブレットの Windows ではいいかもしれませんが、使ったことはありません。
なお、実は、src/wxterminal に少し新しめの glib (2.28 以降)
を必要とする関数が入ったのですが、
そのため今までのうちの wxWidgets 環境では
wxt 関連のソースがコンパイルできなくなってしまいました。
今 glib を含めた gtk 関係、wxWidgets 関係のライブラリを更新している
(Solaris 10) ところですが、
少し大がかりなので、
しばらく開発版の gnuplot がこちらではビルドできません
(5.0.5 などはちゃんと動きます)。
上の新機能などもうちでは試せていませんので、
今はスクリーンショットなどはあげられませんが、
もし使って気がついたことなどがありましたら、
あとでも報告したいと思います。
(cf. 「情報やメモ (03/29 2017)」)
- (02/09 2017)
(しおり用)
前回の報告 (10/31 2016)
からだいぶ日が経ってしまいました。
現在の CVS 版までの変更を、2016 年までのものと、それ以後のもの、
の 2 回に分けて紹介します。今日は、2016 年中の変更まで。
(ChangeLog, manual の更新部分等より)。
- 一般的な機能
- 極座標の R 軸の範囲を逆にできないように (#1880) (12/31)
- set ttics, set mttics と極座標格子周囲の角のラベル付けをサポート
(12/26)
- tic, mtics の save ルーチンの修正 (12/24)
- 極座標モードでなくても極座標格子が書けるように (12/19)
- 極座標の格子線要素の制御を分離 (#1888) (12/18)
- pm3d depthorder interpolate へのメモリ割り当ての問題の修正 (#1884)
(12/15)
- 非線形軸の軸範囲がない場合の対応等の修正 (12/13, 12/15, 12/16, 12/21)
- mouse zoom の動作の非線形軸への対応 (#1883) (12/12)
- mouse zoom で 'set range' でなく内部関数を使うように (#1881,#1882)
(12/12)
- zoom 時の軸の範囲、精度が下がる問題等に関する修正 (#1881,#1882)
(12/12)
- x2 軸、刻みラベルが複数行になる場合の垂直位置に関する修正 (#1882)
(12/12)
- 不十分なメモリ割り当ての問題の修正 (12/10)
- reset で境界のレイヤを front に (12/06)
- show tics から show xyplane を分離 (12/06)
- 3D 描画のデータの初期化に関する修正 (12/02)
- hidden3d 時の境界、格子線のレイヤに関する問題の修正 (11/29, 12/06)
- エンコードに関係する特殊文字の初期化に関する修正 (11/18)
- 3D 軸ラベルを回転等できるように、z 軸ラベルの 2 度印刷の修正 (#1277)
(11/16)
- timestamp コマンドの save に関する修正 (11/14)
- 軸の刻みラベルの位置合わせ、x2 軸の刻みに関する改良 (11/14)
- 線種の設定と pm3d の境界の線種との関係に関する修正 (11/10)
- set timestamp を描画境界でなくページ境界に対して配置するよう (11/08)
- 新機能: splot with zerrorfill (2D filledcurves に似たスタイル)
(11/05, 11/12)
- set micro の CP1252 に関する修正と CP437, CP850 のサポート (11/05)
- splot の key の配置として「fixed」を追加 (default に) (11/03)
- binary record と binary array のサイズが合わない問題の修正 (#1873)
11/03
- terminal ドライバ, wgnuplot 等
- win: 点の記号をビットマップで書いてしまう問題の修正 (12/31)
- wgnuplot: ツールバーアイコンで文字列を表示できるよう (12/25)
- qt: zoombox 座標を何よりも前面に書くように (12/23)
- cairo: user-after-free 問題への対応 (g_clear_object の使用) (#1886)
(12/16)
- gd: 非整数値のフォントサイズも指定できるように (12/05)
- gd: terminal 上でグラフを表示する sixelgd terminal の新設
(12/04, 12/05)
- dumb: 境界、軸の色描画に関する改良 (sixel) 12/01
- dumb: エスケープシーケンスによる色のサポート (11/27)
- wgnuplot: エスケープシーケンスのサポート (set term caca 等) (11/26)
- win: GDI から GDI+ へ全面的に移行 (11/19)
- win: フォントサイズ等の初期化の API の仕様に関する修正 (11/18)
- pdf: PDFlib の pdf terminal を非推奨に (5.0.6 以降) (11/17)
- win: グラフを EMF+ (GDI+ による EMF) で保存できるように (11/15, 11/18)
- wxt (win): スクリーンダンプのサポート (11/15)
- win: マウス処理用の古いコードを削除、ホイールボタンに関する修正 (11/15)
- qt: fillstyle の設定と pattern fill の透明化に関する修正 (11/10)
- win: dash pattern の改善 (11/05)
- win: 上下付き文字の拡大率計算で DPI を考慮するように (11/05)
- その他
- configure 時に gdlib-config を使うよう、LISPDIR は削除 (12/24)
- gnuplot.doc に figure_yerrorfill を追加 (12/07)
- MSVC で Unicode ビルドを可能に、等の修正 (11/26)
- gnuplot.doc に柵グラフ (fence plot) の説明を追加 (11/16)
- デモ
- ttics.dem: set ttics のデモ (12/26)
- animate2.dem: set view のスケールを少し小さく (12/04)
- surface1.dem: タイトル文字列の変更 (11/14)
- fenceplot.dem: 新たな fence plot (zerrorfill) (11/12, 11/15)
- mgr.dem: zerrofill に似た filledcurves のデモを追加 (11/05, 11/10, 11/14)
- zerror.dem: splot with zerrorfill のデモ (11/05)
細かい修正が多いのですが、以下は新規の機能です。
- splot の key の配置として「fixed」を追加 (default に) (11/03)
- splot with zerrorfill (2D filledcurves に似たスタイル)
(11/05, 11/12)
- wxt (win): スクリーンダンプのサポート (11/15)
- win: グラフを EMF+ (GDI+ による EMF) で保存できるように (11/15, 11/18)
- dumb: エスケープシーケンスによる色のサポート (11/27)
- wgnuplot: エスケープシーケンスのサポート (set term caca 等) (11/26)
- gd: terminal 上でグラフを表示する sixelgd terminal の新設 (12/04, 12/05)
- gd: 非整数値のフォントサイズも指定できるように (12/05)
- wgnuplot: ツールバーアイコンで文字列を表示できるよう (12/25)
- 極座標モードでなくても極座標格子が書けるように (12/19)
- set ttics, set mttics と極座標格子周囲の角のラベル付けをサポート
(12/26)
「splot with zerrorfill」は、いわゆる柵グラフ (fence plot) です。
従来も fenceplot.dem でサンプルを紹介していましたが、
それを splot の描画スタイルとして採用したもののようです。
sixelgd は、gnuplot を xterm などの terminal 上で動かして、
その terminal 内に直接グラフを書いてしまうようなものです。
animation もできたりします。
実は従来も sixel ドライバ、すなわち terminal 上で
エスケープシーケンスを使ってある程度のグラフィックを表現するドライバは
gnuplot にあったのですが、これは libgd ベースのものです。
よってほぼフルに gnuplot の機能が使えるようです。
以下にいくつかサンプルがあります。
なお、うちでも試してみたのですが、FreeBSD の xterm
はデフォルトでは sixel はサポートしていません。
ports でオプションを設定してインストールし直して、
「xterm -ti 340」とかやって起動すると sixelgd が使えます。
Solaris の xterm はだめでした。
FreeBSD なら mlterm でも大丈夫ですが、
Solaris で mlterm をコンパイルしたら
なぜか青みがかった色になってしまいました。
set ttics や極座標格子など、
極座標モードの格子や刻みに関する修正、新機能が入っていますが、
実はこの後も極座標モードに関する修正が続けて行われています。
(cf. 「情報やメモ (02/23 2017)」)