(PDF ファイル: faq-ja-20240902.pdf)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

gnuplot FAQ

この文書は、gnuplot バージョン 6 についての記述です。
FAQ バージョン: 2023 12 月

現文書の PDF 版: http://www.gnuplot.info/faq/faq.pdf (訳注: 英語版)。


目次

 ・ 0 メタな質問
     □ 0.1 このドキュメントはどこで手に入れられますか
     □ 0.2 このドキュメントに関するコメントはどこに送れば良いですか

 ・ 1 一般的な質問
     □ 1.1 gnuplot とは何ですか
     □ 1.2 それはどこから来て、そしてなぜ gnuplot と呼ばれているのですか
     □ 1.3 gnuplot は何を提供してくれますか
     □ 1.4 gnuplot はスクリプトに適していますか
     □ 1.5 gnuplot は私のコンピュータで動かすことができますか
     □ 1.6 ライセンスについて
     □ 1.7 gnuplot は FSF や GNU プロジェクトと何か関係があるのですか
     □ 1.8 更なる情報はどこで手に入りますか

 ・ 2 インストール
     □ 2.1 gnuplot の最新バージョンは
     □ 2.2 gnuplot はどこで手に入れられますか
     □ 2.3 なぜ開発版を気にしなければいけませんか
     □ 2.4 gnuplot の最新の開発版はどこで手に入れられますか
     □ 2.5 gnuplot は私のシステムではどうコンパイルすれば良いですか
     □ 2.6 ドキュメントはどこですか、それはどうすれば手に入れられますか
     □ 2.7 動作するサンプル
     □ 2.8 私の gnuplot にどのオプションがコンパイルされているかを知るには

 ・ 3 動作
     □ 3.1 ヘルプはどうすれば手に入れられますか
     □ 3.2 どうすればグラフをプリントアウトできますか
     □ 3.3 どうすればグラフを私のワープロソフトに取り込めますか
     □ 3.4 どうすれば gnuplot のグラフを編集や後処理できますか
     □ 3.5 どうすれば現在の設定を保存/再利用できますか
     □ 3.6 一つのファイルに gnuplot のコマンドとデータの両方を書けますか
     □ 3.7 どうすれば描画前にデータにフィルタをかけられますか
     □ 3.8 私のプログラムで gnuplot のルーチンを利用できますか

 ・ 4 グラフの見た目のカスタマイズ
     □ 4.1 色や線や点記号のデフォルト属性を調べたり変更するには
     □ 4.2 陰線処理、隠面処理
     □ 4.3 グラフの境界をページの特定の位置に丁度合わせるには
     □ 4.4 複数のグラフをひとつのページ内で隣同士に配置するには
     □ 4.5 縦と横の軸の目盛りを 1:1 にできますか
     □ 4.6 カラーとモノクロの両方の出力で機能するようなパレットは
     □ 4.7 どうしたらデータ点をスキップできますか
     □ 4.8 どうしたら n 点毎にデータを扱えますか
     □ 4.9 どうしたら鉛直線を書けますか

 ・ 5 Y 軸のラベルの位置が悪い、あるい左の開きが大きすぎ
 ・ 6 良く質問されるグラフの形式
     □ 6.1 アニメーション
     □ 6.2 陰関数のグラフ
     □ 6.3 2 つの関数の間の領域を塗りつぶすには
     □ 6.4 3 次元データの 2 次元射影を描画するには
     □ 6.5 pm3d 色地図/曲面上に dots/points の散布図を重ねるには
     □ 6.6 ラベルつきの等高線を描画するには
     □ 6.7 gnuplot は棒グラフ/ヒストグラム/箱型グラフが書けますか
     □ 6.8 gnuplot は円グラフが書けますか、四半期グラフはどうですか
     □ 6.9 gnuplot は一つのグラフで複数の y 軸を使えますか
     □ 6.10 小 3 角面で構成される物体を描画するには
     □ 6.11 どうしたら 2 つの関数を重ならないように書けますか
     □ 6.12 どうしたら splot で格子でない曲線を書けますか
     □ 6.13 どうしたら x-y 平面上で他の関数に制限されている f(x,y) のグラフを
        書けますか

 ・ 7 文字列の整形と特別な記号
     □ 7.1 "enhanced text" モードによる文字列のマークアップ
     □ 7.2 文字列のマークアップをオンに/オフにするには
     □ 7.3 特殊文字に関するすべて問題の回答は UTF-8 にすることですか
     □ 7.4 Planck 定数 (h に横線) が必要なときはどうしたらいいですか
     □ 7.5 太陽質量記号 (丸に点) が必要なときはどうしたらいいですか
     □ 7.6 ギリシャ文字や他の特別な記号を使うには
     □ 7.7 どうしたらアクセント付きの文字を出力できますか
     □ 7.8 異なるサイズのテキストを一つのグラフで出力できますか

 ・ 8 その他
     □ 8.1 gnuplot には画像形式 XXX をサポートするドライバはありますか
     □ 8.2 バグを見つけたのですがどうしたら良いですか
     □ 8.3 "heavy-duty" データを gnuplot で使えますか、または gnuplot に代わる
        ものはないですか
     □ 8.4 gnuplot が持たない特殊関数が必要な場合は
     □ 8.5 私の対話型ターミナルでホットキーを使うには
     □ 8.6 gnuplot の次期バージョンの開発について知りたいのですがどうしたらい
        いですか

 ・ 9 共通の問題
     □ 9.1 助けて! 私のフォントが使えない
     □ 9.2 qt 出力形式のセッションでの最初のグラフが失敗したり変なレイアウトに
        なります
     □ 9.3 pm3d によるデータファイルの splot で何も表示されません
     □ 9.4 なぜ gnuplot はとても小さい数字のデータを無視するのですか
     □ 9.5 multiplot のグラフを replot や resize すると一かけらしか出ません
     □ 9.6 書いた式 (1/3 など) が意味のない結果を出力してしまいます
     □ 9.7 私の出力が不完全です
     □ 9.8 パイプやスクリプトから gnuplot を呼び出すとスクリーンにグラフがでま
        せん

 ・ 10 帰属

0 メタな質問

0.1 このドキュメントはどこで手に入れられますか

このドキュメントの最新版は、Web 上の http://www.gnuplot.info/faq/ にあります。

0.2 このドキュメントに関するコメントはどこに送れば良いですか

コメント、提案等は開発者向けメーリングリスト gnuplot-beta@lists.sourceforge.net
に送ってください。

1 一般的な質問

1.1 gnuplot とは何ですか

gnuplot はコマンド駆動型の描画プログラムです。関数の描画、およびデータ点の描画
を、2 次元、3 次元の両方で、そして多くの異なるスタイル、多くの異なる出力形式で
行うことができます。また、gnuplot は自動的にグラフを生成するスクリプト言語とし
ても使用することができます。これは主に科学的なデータを画面表示するものとして設
計されています。 gnuplot の著作権は保護されていますが、自由に配布でき、代金を払
う必要はありません。ソースコードのダウンロードも歓迎します。

1.2 それはどこから来て、そしてなぜ gnuplot と呼ばれているのですか

gnuplot の作者は Thomas Williams, Colin Kelley, Russell Lang, Dave Kotz, John
Campbell, Gershon Elber, Alexander Woo、そして多くの協力者です。

以下は Thomas Williams によります:

    私は微分方程式の講義を、そして Colin は電磁気学の講義を取っていて、 2 人と
    もそれらに関する数学が視覚化できればなあと考えていました。私達はある EE
    (Engineering Electronics) VLSI 研のシステム管理者として働いていて、そして、
    グラフィック端末とコーディングを行なう時間がありました。その投稿は我々の期
    待以上に良く受け入れられ、そして、不完全でしたが、ファイルデータに関するい
    くつかのサポートに我々を駆り立てました。

    GNUplot という紹介はどんなものも正しくはありません。このプログラムの本当の
    名前は "gnuplot" です。ずいぶんと "Gnuplot" と書かれているのを見るでしょう
    が、それは我々の大半が、固有名詞やタイトルであっても、文章を小文字で開始す
    ることに嫌悪を持っているからです。 gnuplot は GNU プロジェクトや FSF とは、
    極わずかの意味を除けば少しも関係ありません。我々のソフトウェアは完全に独立
    にデザインされたもので、そして "gnuplot" という名前は実は妥協によるものです
    。私は "llamaplot" と呼びたかったし、 Colin は "nplot" と呼びたかったのです
    。そして、我々は "newplot" がいいだろうということで合意しましたが、しかしそ
    のときその名前を持つ、絶対的におぞましい Pascal のプログラムを計算機科学部
    でたまに使っていることを知りました。それで私は "gnuplot" がいいごろ合わせに
    なるとして、後で Colin もそれに同意したのです。

1.3 gnuplot は何を提供してくれますか

 ・ 2 次元での関数やデータの、点、折れ線、誤差表示、塗り潰した図形、ラベル文字
    列、ベクトルなどの沢山の異なる要素を組み合わせた描画
 ・ 極座標軸、対数軸、より一般の非線形軸の割り当てや媒介変数座標
 ・ 温度分布、ビースウォームグラフ、バイオリングラフ、ヒストグラムなどのデータ
    表現
 ・ 3 次元でのデータの、点、折れ線、曲面の、たくさんのスタイル (等高線描画、網
    かけ) による描画
 ・ 整数、実数、複素数での代数演算
 ・ Marquardt-Levenberg 最適法を用いたデータ駆動型の曲線回帰
 ・ 多くのオペレーティングシステム、多くのグラフィックファイル形式出力、そして
    多くの出力装置のサポート
 ・ 広範囲にわたるオンラインヘルプ
 ・ ラベル、タイトル、軸、データ点への TEX ライクな書式による見出し付け
 ・ 対話型入力形式のエディット機能とヒストリ (履歴) 機能のサポート

1.4 gnuplot はスクリプトに適していますか

ええ。gnuplot は対話型実行中に追加コマンドを含むファイルを読み込むことができま
すし、既に存在するファイルや標準入力からのコマンド列をパイプを使ってバッチモー
ドでそれを処理することもできます。 gnuplot は、Octave のような高水準な数学パッ
ケージの背後で実行するグラフィックドライバとして使われていますし、 cgi スクリプ
トでラップすることで容易に Web 起動型の描画生成ツールとして使うこともできます。
gnuplot は、なじみのある命令 if else continue break while for を用いた文脈駆動
型、データ駆動型の処理制御、および繰り返しをサポートしています。

1.5 gnuplot は私のコンピュータで動かすことができますか

gnuplot は、MS Windows, linux, unix, macOS などの多くのプラットホーム上で、広く
利用できます。現在のソースコードは、VMS, Ultrix, OS/2, MS-DOS などの古いシステ
ムのサポートも保持していますが、 16 ビットプラットホームはもうサポートしていま
せん。

gnuplot のソースは、それなりに標準的 (ANSI/ISO C, POSIX 等) な環境から多少外れ
たものの上でもコンパイルできるでしょう。

1.6 ライセンスについて

gnuplot はボランティアの集団によって作られたものです。彼らは gnuplot 、およびそ
の使用の許可、不許可に関する法的な文書を作成できません。また何の保証もありませ
ん。自分自身の責任で使用してください。

gnuplot は、無償であると言う意味でフリーウェアです。 gnuplot をあなたが望むよう
に使用し、改変することができますが、改変したものを配布することについてはある種
の制限がつきます。 Copyright というファイルの modification (改変) と
redistribution (再配布) の項目を読んでそれに従ってください。ソースファイルのう
ち、個別に、明らかに二重ライセンスのものがいくつかあります。その場合、その特定
のファイルに含まれるコードの再配布に関する代わりの条項は、そのファイルの先頭に
挙げられています。

1.7 gnuplot は FSF や GNU プロジェクトと何か関係があるのですか

gnuplot は FSF が作ったのでも FSF がメンテナンスしているのでもありません。一時
期 FSF から配布されていたこともありますが、しかし現在はこれは正しくありません。
gnuplot は、GNU General Public License (GPL) に全く保護されていません。

1.8 更なる情報はどこで手に入りますか

gnuplot Web ページ http://www.gnuplot.info を見てください。

英語以外の他の言語での文書や入門書もあります。最新のリストについては、 http://
gnuplot.sourceforge.net/help.html の "Localized learning pages about gnuplot"
の節をご覧ください。

2 インストール

2.1 gnuplot の最新バージョンは

gnuplot の最新の安定版は、2023 年 12 月に最初にリリースされた 6.0 です。更新バ
ージョン (パッチレベル 1, 2, ...) は、だいたい 6 ヶ月毎にリリースされます。現在
の開発版は gnuplot 6.1 です。


2.2 gnuplot はどこで手に入れられますか

初めに最も適切な場所は http://www.gnuplot.info です。ここから、例えば
SourceForge 上の開発プロジェクトサイト http://sourceforge.net/projects/gnuplot
などの、色々なサイトの場所を見つけられるでしょう。

ソース配布物 ("gnuplot-6.0.0.tar.gz" または同様の名前) は公式の配布サイト http:
//sourceforge.net/projects/gnuplot にあります。

2.3 なぜ開発版を気にしなければいけませんか

一般的に、現在の開発版は、最終安定リリース版の gnuplot にはまだ入っていない機能
も入っています。

2.4 gnuplot の最新の開発版はどこで手に入れられますか

gnuplot の開発版は、git リポジトリに保持されていて、以下に示すようにクローンを
手元で作成し、ソースを調べたり、実行プログラムをソースから作成したりできます。

  git clone https://git.code.sf.net/p/gnuplot/gnuplot-main gnuplot

開発版に対する質問は必ず gnuplot-beta@lists.sourceforge.net に送ってください。

2.5 gnuplot は私のシステムではどうコンパイルすれば良いですか

リリースノートと README, INSTALL のファイルを読んでください。C と C++ コンパイ
ラが必要で、様々なサポートライブラリがあらかじめインストールされている必要もあ
りますが、それはどのような設定オプションを選択するかによりますし、作成する実行
ファイルにどの出力形式をサポートさせたいかにもよります。

 ・ linux 上でリリース版からコンパイルするには、./configure (一人の一般ユーザ用
    にインストールする場合は、 ./configure --prefix=$HOME/usr) とし、次に make
    として、最後に make install です。 configure スクリプトの出力には十分注意を
    払ってください (そう、それはとても長いのだけれど)。そこには、どのサポートラ
    イブラリが必要なのか、どの追加オプションが望ましいのか、といったことに対す
    るヒントが現れています。一般には、各サポートライブラリの「開発版」パッケー
    ジをインストールしておく必要があるでしょう。
 ・ linux 上で開発版ソースからコンパイルするには、 ./configure を実行させる前に
    、別のスクリプト ./prepare を実行する必要があります。
 ・ Windows では、makefile は config/mingw, config/msvc, config/watcom, config/
    cygwin 内にあります。 makefile の先頭に書かれているオプションを修正し、その
    makefile が置かれているのと同じディレクトリ内で適当な make ツールを実行して
    ください。追加説明も、makefile に書かれています。
 ・ 他のプラットフォームでは、適切な makefile (例えば OS/2 なら makefile.os2)
    を config/ ディレクトリから src/ にコピーして、 makefile のヘッダにあるオプ
    ションを必要なら更新して、 src にディレクトリを移動して、 make を実行してく
    ださい。

2.6 ドキュメントはどこですか、それはどうすれば手に入れられますか

ソース配布物に完全なドキュメントが PDF ファイル形式で含まれています。個々のセク
ションは、gnuplot の作業中に help キーワードを打つことで見ることができます。ド
キュメントの他の形式も、docs サブディレクトリ内でソースからコンパイルできます。

http://gnuplot.sourceforge.net/documentation.html に、英語版と日本語版のコピー
が置いてあります。

2.7 動作するサンプル

ソース配布物には動作するサンプルのディレクトリが含まれています。これらのサンプ
ルの多く、およびその結果の描画グラフは http://gnuplot.sourceforge.net/demo/ で
も見ることができます。

2.8 私の gnuplot にどのオプションがコンパイルされているかを知るには

コンパイル済みの gnuplot が与えられている場合、show コマンドで、それがコンパイ
ルされたときに使用されたコンフィグレーションとビルドオプションの一覧を表示でき
ます。あなたの gnuplot に組み込まれている出力形式 ("terminal" とも言います) は
、 set terminal で表示できます。

gnuplot> show version long
gnuplot> set terminal

3 動作

3.1 ヘルプはどうすれば手に入れられますか

最初のプロンプトで help コマンドを実行してください。その後キーワードをたどって
いってください。 help plot や help set から始めるのがいいでしょう。

 ・ もし、持っているならマニュアルを読んでください

 ・ demo サブディレクトリのデモを実行するか、ネット上にあるそのコピーを見てくだ
    さい。ヒントを与えてくれるでしょう。 http://gnuplot.info/demo

 ・ システム管理者、または gnuplot を設定した同僚に尋ねてください。

 ・ gnuplot に関する質問を議論する Usenet グループ  comp.graphics.apps.gnuplot
    が古くからありますが、そこの住民はほとんど前世紀の人々です。

 ・ より活発なヘルプフォーラムが StackOverflow にあります。 http://
    stackoverflow.com/questions/tagged/gnuplot

 ・ それらにすべて失敗した場合、メーリングリスト
    gnuplot-info@lists.sourceforge.net にメールを送ってください。そのメーリング
    リストが別に受けてしまう大量の spam を削減するため、投稿の前にそのメーリン
    グリストに参加 (subscribe) しなければいけないことに注意してください。参加の
    方法は、 http://lists.sourceforge.net/lists/listinfo/gnuplot-info にありま
    す。

質問をする際は、あなたが使用している gnuplot のバージョンとオペレーティングシス
テムについても言及する必要があります。あなたのやり方で期待したようにはうまくで
きなかったグラフについて質問したいときは、その問題を持つグラフを生成するような
最小の gnuplot コマンド列を示すようにしてください。

3.2 どうすればグラフをプリントアウトできますか

plot コマンドが生成するものの出力形式は、その前の set terminal によって決定しま
す。対話型でない出力に対しては、ファイル名を指定するためにこれと set output コ
マンドを組にして実行します。

以下の例の作業は、まず sin(x) のグラフをスクリーン上に描画し、同じグラフを PDF
出力ファイルとして再描画します。注意: PDF 出力は、スクリーン上に表示されるグラ
フと完全には同じにならない可能性があります。

gnuplot> plot sin(x)
gnuplot> set terminal pdf
Terminal type is now 'pdfcairo'
Options are ' transparent enhanced fontscale 0.5 size 5.00in, 3.00in '
gnuplot> set output "sin.pdf"
gnuplot> replot
gnuplot> unset output       # 出力ファイルを閉じる (でないと開いたまま)
gnuplot> unset terminal     # デフォルト対話型出力形式に戻す
gnuplot>

出発点が、デフォルト対話型出力形式でない場合は、同じことを push と pop で達成で
きます。

gnuplot> set terminal push   # 現在の出力形式を保存 (デフォルでなくてもよい)
gnuplot> set terminal pdf
gnuplot> set out 'a.pdf'
gnuplot> replot
gnuplot> unset out
gnuplot> set term pop        # 保存した出力形式を復帰

対話型出力形式の中にはそのツールバー上にプリンタアイコンを提供するものもありま
す (win, wxt, qt 等)。それは、他の出力形式を使用するのではなく、システムに用意
されている一般的なシステムツールを使い、現在のグラフを印刷するか、またはファイ
ルに保存します。すなわち、印刷メニューで "save to png" を選択して得られるファイ
ルは、 set term png; replot; によって得られるファイルとは違うものになります。一
般に、この方法で保存したグラフは、コマンドラインから出力形式を変更して作成した
ものよりも、よりスクリーン画像に近いものを生成するでしょう。

3.3 どうすればグラフを私のワープロソフトに取り込めますか

基本的に、グラフをそのワープロソフトが理解できる形式のファイルに保存すれば、そ
のワープロソフトで読み込むことができるでしょう。後で正しいサイズに変換もできる
という点で、ベクトル形式のフォーマット (PostScript, emf, svg, pdf, TEX, L^ATEX)
の方がいいでしょう。

使用できるファイル形式の一覧を見るには set term としてください。

多くのワープロソフトは Encapsulated PostScript (*.eps) のグラフを取り込めます。
gnuplot では、
set terminal postscript eps または set terminal epscairo を使うことで eps 出力
を選択できます。 gnuplot は、出力する EPS ファイルにプレビュー用のビットマップ
画像を埋め込みませんので、ワープロソフトに対応させるために、そのファイルをワー
プロソフトに取り込む前に、外部ツールを使って自分自身でプレビュー画像を追加しな
いといけない場合もあるかもしれません。

LibreOffice や Microsoft Office 等のアプリケーションには、 EMF 形式のベクトル画
像を処理できるものがあります。そのような画像ファイルは emf 出力形式でも作れます
し、 windows 出力形式の描画ウィンドウのツールバーから 'Save as EMF...' を選択す
ることでも作れます。

LibreOffice は SVG 形式も、AutoCAD の dxf 形式も読みこむことができます。

gnuplot を使って TEX や L^ATEX 文書に取り込むためのグラフを作る方法は何通りもあ
ります。取り込む *.tex ファイルの断片を直接生成する出力形式もありますし、 \
includegraphics コマンドを使って取り込むための *.eps, *.pdf, *.png 出力を生成す
るものもあります。 epslatex と cairolatex 出力形式は、画像ファイル (*.eps か
*.pdf) とそれを参照する *.tex 文書ファイルの両方を生成します。 tikz 出力形式は
、テキストとグラフを生成し、その出力を pdflatex で処理すれば PDF ファイルが作成
できます。

大抵のワープロソフトはビットマップ画像 (png, pbm 等) を取り込むことができますが
、この方法の短所は、そのグラフが gnuplot によって生成されたときのサイズによって
その解像度が制限されてしまうことです。一般に、文書が最終的にプリントアウトされ
る解像度よりもその解像度はかなり低くなります。

3.4 どうすれば gnuplot のグラフを編集や後処理できますか

これはあなたが使う出力形式に依存します。

 ・ svg 出力形式 (scalable vector graphics) の出力は Inkscape (http://
    www.inkscape.org), Skencil (http://www.skencil.org), Dia (http://
    projects.gnome.org/dia/), のような svg エディタで更なる編集も行なえますし、
    OpenOffice.org (OO.o Draw プリミティブへの変換によって) の中に取り込むこと
    もできます。

 ・ PostScript や PDF 出力は、Adobe Illustrator や Acrobat のようなツールで直接
    編集できますし、 pstoedit パッケージで他の色々な編集可能なベクトル形式に変
    換することも可能です。 pstoedit は http://www.pstoedit.net にあります。

 ・ DXF 出力形式は AutoCAD の書式で、他のいくつかのアプリケーションでも編集でき
    ます。

 ・ ビットマップ形式の画像 (png, jpeg, pbm 等) は ImageMagick や Gimp の様なツ
    ールで編集することができます。一般に、ベクトルグラフィック形式の後処理を行
    なうにはベクトルグラフィックプログラム (ドロー系ツール) を、ピクセル画像に
    はピクセル画像系のプログラム (ペイント系ツール) を使う必要があります。

3.5 どうすれば現在の設定を保存/再利用できますか

それには save "filename" と load "filename" のコマンドを使ってください。

3.6 一つのファイルに gnuplot のコマンドとデータの両方を書けますか

gnuplot のバージョン 5 以降では、「ヒアドキュメント」形式での名前付きデータブロ
ックをサポートしています:

gnuplot> $DATABLOCK << EOD
  cats 4 2
  dogs 1 4
EOD
gnuplot> plot $DATABLOCK using 2:3:1 with labels

名前付きデータブロックは一度定義すれば、それを何度でも使うことができます。

データは、plot コマンド上で疑似ファイル指定 plot "-" を行ってインライン形式で与
えることもできます。この場合は、データは一度しか使えません。

gnuplot> plot "-"
1 1
2 4
3 9
e

3.7 どうすれば描画前にデータにフィルタをかけられますか

あなたの使用する OS が popen() 関数をサポートしているなら、他のプログラムやシス
テムユーティリティを plot コマンドの一部分として使用して入力データをフィルタリ
ングすることができます。

gnuplot> plot "< sort +2 file.in"  # 2 列目のデータで事前にソート

この仕組みは、Unix 由来のコマンドラインツール awk, sort, grep などと組み合わせ
て使用するととても強力です。

3.8 私のプログラムで gnuplot のルーチンを利用できますか

パイプをサポートしているシステムでは、他のプログラムからパイプ経由で gnuplot に
コマンドを渡すことができます。 Octave (http://www.octave.org) のように、
gnuplot をグラフィックエンジンとして使用している多くのアプリケーションがこの方
法を使用しています。これは、form ベースの Web ページから gnuplot を起動する cgi
スクリプトでも利用できます。

4 グラフの見た目のカスタマイズ

4.1 色や線や点記号のデフォルト属性を調べたり変更するには

複数の要素に対する plot や splot コマンドを実行した場合、 gnuplot は、デフォル
トでは色と線種の集合を巡回的に使用します。これは、その plot コマンドに特定の色
や線種属性を指定することで変更できますし、デフォルトの列を変更することもできま
す。以下のコマンドは、それぞれ追加パラメータをたくさん指定できます。

 ・ test は、現在の出力形式に対する有効な色、線、点の属性などを表示します。
 ・ set color と set monochrome は、定義済みの列を選択します。
 ・ set linetype は、存在する線種の属性を変更するか、新しいものを追加します。
 ・ set palette は、温度地図のような pm3d モードで使用されるカラーパレットを変
    更します。
 ・ set pointsize は、追加の倍率としてすべての点のサイズをスケールします。

4.2 陰線処理、隠面処理

2 つの関連するコマンドがあります。 set hidden3d は、3 次元描画スタイル splot
... with lines で描画する曲面に影響を与えます。それは、他の 3 次元描画スタイル
で生成され、それらの曲面で隠される線分をクリッピングします。しかし、pm3d モード
で生成されるグラフは処理しません。 with pm3d, with zerror, with boxes のスタイ
ル、および set pm3d が有効な最中に描かれた様々な描画要素についても同様です。こ
れらのグラフに対する隠面処理は、見る側からの距離の順番でそれらを描画することに
よって代用的に達成されていますが、その順番は、コマンド set pm3d depthorder で制
御できます。

4.3 グラフの境界をページの特定の位置に丁度合わせるには

上、下、左、右の境界位置を、ページ内の位置として比率で指定してください:

set lmargin at screen 0.05
set bmargin at screen 0.05
set rmargin at screen 0.95
set tmargin at screen 0.95

4.4 複数のグラフをひとつのページ内で隣同士に配置するには

あなたが必要とするコマンドは set multiplot です。 gnuplot は指定した数のグラフ
を規則的な升目状に配置します (set mulplot layout <rows>, <columns> ...)。または
、それらを set origin と set size を使ってひとつずつ位置を決めることもできます
。

4.5 縦と横の軸の目盛りを 1:1 にできますか

set size square か set view equal xy としてみてください。バージョン 6 では、set
isotropic というコマンドもあります。

4.6 カラーとモノクロの両方の出力で機能するようなパレットは

set palette cubehelix を試してください。

4.7 どうしたらデータ点をスキップできますか

以下のようにデータ値として ? を指定すればできます。

        1 2
        2 3
        3 ?
        4 5

set missing も参照してください。データファイルのコメント文字を指定するには、 
set datafile commentschars を参照してください。

4.8 どうしたら n 点毎にデータを扱えますか

これは、例えば plot 'a.dat' every 2 のように、 plot コマンドに色々なオプション
を指定することでできます。すべての点を通る線を引き、しかし点の記号は n 点毎に書
きたい場合は、
plot 'a.dat' with linespoints pointinterval n としてみてください。

4.9 どうしたら鉛直線を書けますか

状況によりますが、主な方法は以下の通りです:

 ・ set arrow .... .... nohead この場合、矢の正確な開始点と終了点の位置を計算し
    ておく必要があります。
 ・ データ点を作って (インラインでの指定も可) それを描画

5 Y 軸のラベルの位置が悪い、あるい左の開きが大きすぎ

gnuplot は、Y 軸ラベルを水平に出力する場合 (set ylabel norotate)、それを書くの
に、グラフの左にどれくらいのスペースが必要かを評価する方法に問題を抱えていまし
た。これは、そのラベル文字列が TeX のマークアップを含んでいる場合は特にそうでし
た。この問題の回避策として、ylabel ではなく、番号付きラベルで文字列を置くことが
できます。

Y = 1001
set label Y '$\operatorname{\mathfrak{Im}} S_{21}$'
set label Y norotate at graph 0.0, 0.5 offset -6

6 良く質問されるグラフの形式

6.1 アニメーション

gnuplot バージョン 5.4 までは、直接アニメーションファイルを出力できる出力形式は
一つだけ (gif) でした:

set terminal gif animate {delay <time>} {loop <N>} {optimize}

バージョン 6 では、webp フォーマットでのアニメーションもサポートしています。デ
モの中の http://gnuplot.sourceforge.net/demo/animate2.html も参照してください。

6.2 陰関数のグラフ

gnuplot では陰関数のグラフや曲線は直接は描画できません。しかし、次善の策はあり
ます。

gnuplot> # 例: 次の行を適当な定義に置き換えてください。
gnuplot> f(x,y) = y - x**2 / tan(y)
gnuplot> set contour base
gnuplot> set cntrparam levels discrete 0.0
gnuplot> unset surface
gnuplot> set table $TEMP
gnuplot> splot f(x,y)
gnuplot> unset table
gnuplot> plot $TEMP w l

その仕掛けは、曲面 z=f(x,y) の 1 本の等高線 z=0 を描き、その等高線のデータを一
時ファイルやデータブロックにセーブすることにあります。

6.3 2 つの関数の間の領域を塗りつぶすには

2 つの関数 f(x) と g(x) の間を塗りつぶすグラフは、疑似ファイル '+' と
filledcurves を使えば簡単にできます。

f(x)=cos(x); g(x)=sin(x)
set xrange [0:pi]
plot '+' using 1:(f($1)):(g($1)) with filledcurves

注意してもらいたいのですが、上の例のスクリプトは 2 つの曲線の間の領域を塗りつぶ
すものであって、どちらが他方の上であるかを考慮はしません。もし、 g(x)<f(x) か、
または f(x)<g(x) を満たす領域のみを塗り潰したいなら、 filledcurves の後ろに
above か below のキーワードを追加してください。

6.4 3 次元データの 2 次元射影を描画するには

コマンド set view map は、視角とスケールを調整し、それに続く splot による 3 次
元グラフを、 plot による 2 次元グラフとほぼ同じレイアウトで、x 軸を水平に、 y
軸を鉛直方向に表示してくれます。バージョン 5.4 のコマンド set view projection
xz や set view projection yz は、同様に xz や yz 平面の 2 次元射影用のレイアウ
トを初期化し、z 軸を水平にし、 x 軸や y 軸を鉛直方向に表示します。

6.5 pm3d 色地図/曲面上に dots/points の散布図を重ねるには

pm3d スタイルの explicit オプションを使ってください:

gnuplot> set pm3d explicit
gnuplot> splot x with pm3d, x*y with points

6.6 ラベルつきの等高線を描画するには

個々の等高線にラベルをつけたグラフは、gnuplot バージョン 4 ではある種の裏技と余
分な処理手順が必要でしたが、バージョン 5 以降その手順はとても簡単です。等高線を
、1 回目は "with lines" で、2 回目は "with labels" で 2 回描画するだけです。目
立つラベルを作成したい場合は、以下のようにするといいでしょう。

set style textbox opaque noborder
set contours
splot 'DATA' with lines, 'DATA' with labels boxed

6.7 gnuplot は棒グラフ/ヒストグラム/箱型グラフが書けますか

gnuplot は、あらかじめ表形式にされたデータを表示するための、さまざまな横並び型
(clustered) と積み上げ型 (stacked) のヒストグラムスタイルをサポートしています。
また、生のデータを場所毎に累積するためのいくつかのオプションも提供していて、そ
れを切り替えて棒グラフとして表示させることも可能です。マニュアルの bins と 
smooth frequency の部分を参照してください。

6.8 gnuplot は円グラフが書けますか、四半期グラフはどうですか

円グラフは古い gnuplot ではちょっと面倒でした。以下を見てください。 http://
gnuplot.sourceforge.net/demo/circles.html または、以下を参照してください。
http://gnuplot-tricks.blogspot.com/2009/08/pie-charts-entirely-in-gnuplot.html
バージョン 6 では、新しい描画スタイル with sectors を導入し、もっと簡単に円グラ
フが描けるようになっています。

デモの中には単純なガントチャートの例があります。

6.9 gnuplot は一つのグラフで複数の y 軸を使えますか

はい。2 次元グラフでは別々に x 軸を下 (x1) と上 (x2) に持つことができますし、別
々に y 軸を左 (y1) と右 (y2) に持つことができます。バージョン 5 では、with
parallelaxes という描画モードで y 軸をさらにいくつでも追加することもできます。

6.10 小 3 角面で構成される物体を描画するには

描画スタイル with polygons は、2 次元描画でも、 3 次元描画でも多角形形状 (三角
形、四辺形、八角形、...) を処理できます。これはバージョン 5.4 で導入されました
。

古いバージョンで、それを行う最も良い方法は、 3 次元物体の各面を色付きの四辺形と
して、以下のような形式のファイルを使って記述することです:

# 三角形 1
x0 y0 z0 <c0>
x1 y1 z1 <c1>

x2 y2 z2 <c2>
x2 y2 z2 <c2>


# 三角形 2
x y z
...

1 行の空行と 2 行の空行に注意してください。また、各三角形は実際には 4 つの頂点
を持ち、そのうちの 2 つが同一であることにも注意してください。これは、pm3d のコ
ードが、四辺形を処理する方法しか知らないからです。 <cN> はオプションの色指定で
す。

これを以下のようにして描画します:

set pm3d
set style data pm3d
set pm3d depthorder
splot 'facets.dat' using 1:2:3 title "default coloring"
splot 'facets_with_color.dat' using 1:2:3:4 title "explicit colors"

gnuplot は 3 次元モデリングソフトではありませんので、本当の 3 次元描画のために
は、多分レイトレーシングソフトを使う方がいいでしょう。

6.11 どうしたら 2 つの関数を重ならないように書けますか

描画する各関数の直前に描かせたい範囲を置いてください。例えば、実験データと、領
域の別の部分をカバーする 2 つの異なる関数モデル f1, f2 を描画するには:

gnuplot> set autoscale x  # x の範囲をデータから取得
gnuplot> plot 'data', [*:0] f1(x), [0:*] f2(x)

6.12 どうしたら splot で格子でない曲線を書けますか

splot への入力データが、各行が同じデータ点数 (通常は空行で分離されている) を持
つように揃っていれば、splot はデフォルトではそのデータを曲面を記述するものとし
て扱います。そうでなく個々の曲線を描画したければ、 unset surface, set surface
explicit, plot ... nosurface などを組み合わせてみてください。

6.13 どうしたら x-y 平面上で他の関数に制限されている f(x,y) のグラフを書けます
か

以下は一つの方法です:

gnuplot> f(x,y) = x**2 + y **2
gnuplot> x(u) = 3*u
gnuplot> yu(x) = x**2
gnuplot> yl(x) = -x**2
gnuplot> set parametric
gnuplot> set cont
gnuplot> splot [0:1] [0:1] u,yl(x(u))+(yu(x(u)) - yl(x(u)))*v,\
       >                   f(x(u), (yu(x(u)) - yl(x(u)))*v)

7 文字列の整形と特別な記号

7.1 "enhanced text" モードによる文字列のマークアップ

バージョン 5 以降、gnuplot はデフォルトで拡張文字列モード (enhanced text) で、
それは特殊文字を文字列内に埋めこむことによって文字列のマークアップを示します。

拡張文字処理制御記号
制御記号 例                  結果        説明
^        a^x                 $a^x$       上付き文字
_        a_x                 $a_x$       下付き文字
@        a@^b_{cd}           $a^b_{cd}$  空ボックス (幅がない)
&        d&{space}b          d b         指定した長さのスペースを挿入
~        ~a{.8-}             $\tilde{a}$ 'a' の上に '-' を、現在のフォントサ
                                         イズの .8 倍持ち上げた位置に重ね書き
         {/Times abc}        abc         Times フォント、今のサイズで abc を出
                                         力
         {/Times*2 abc}      abc         Times フォント、今の倍のサイズで abc
         {/Times:Italic abc} abc         Times フォント、イタリック体で abc
         {/Arial:Bold=20     abc         Arial フォント、太字、サイズ 20 で abc
         abc}

7.2 文字列のマークアップをオンに/オフにするには

この処理モードから、特定のテキスト文字列を除外するには、キーワード noenhanced
を使用してください。例えば、ファイル名を下付き文字と解釈させないためには:

set title 'Compare file_1.dat and file_2.dat' noenhanced

7.3 特殊文字に関するすべて問題の回答は UTF-8 にすることですか

ええ。

不運にも、特に PostScript 出力の生成時など、使用するにはかなり厄介な環境がいく
つかあります。 UTF-8 のコンピュータ環境で作業をしている場合、 gnuplot でそれを
使用する場合には、多分何か特別なことをする必要はないでしょう。しかしそうでない
場合は、出力のためには gnuplot に UTF-8 を使用することを以下のように伝える必要
があります: set encoding utf8

UTF-8 文字列をあなたのキーボードで入力できない場合は、 gnuplot の外でそれを解決
する必要があるでしょう。またはその 8 進のエスケープ文字列を 1 バイト毎入力する
か、 (バージョン 5.4 以降は) \U+221E ($\infty$) のような Unicode のエスケープシ
ーケンスを使うことができます。あなたのキーボードで UTF-8 を生成できるがどのキー
ストロークで特定の文字列を生成できるかを知らない場合は、多分適当な文字選択アプ
リケーションがあなたのデスクトップについているでしょう (例えば KDE なら
kcharselect、 GNOME なら Character Map)。

7.4 Planck 定数 (h に横線) が必要なときはどうしたらいいですか

最も自然な方法は、UTF-8 フォントを使い、文字 $\hbar$ (Unicode \U+210F) を直接入
力することです。

PostScript: PostScript では utf8 の処理は面倒なので、拡張文字列処理 (enhanced
text モード) のマークアップと、多分特別な Symbol フォントを使った擬似的なことを
やる必要があります:

@{/=56 -} {/=24 h} または {/=8 @{/Symbol=24 -} _{/=14 h}} 後者は 24pt (ポイン
ト) の "-" (/Symbol フォントの中の長いハイフン) をスペースなしで使います。 14pt
の "h" は 8pt のスペース ("_" の前にあるスペース) だけずらして置きますが、それ
は下付き文字として書くので小さい文字になります。しかしそれらは通常我々が使用す
るプランク定数の記号とは違っていて、横線は斜線ではなく水平線になります。もう一
つの方法は {/=14 @^{/Symbol=10 -}{/=14 h}} とすることです。

AMS-LaTeX の PostScript フォント(http://www.ams.org/tex/amsfonts.html にあり、
そして多くの LaTeX 配布にも含まれています) を使えば、とても簡単に小さい Planck
定数をセットすることができますが、gnuplot (help fontpath を参照) と、
PostScript インタープリタ (通常 Ghostscript) がファイル msbm10.pfb (または
msbm10.pfa) がどこにあるかを知る必要があります。"h" に傾斜のついた横棒を重ねた
\hslash を生成するには {/MSBM10 \175} を使ってください。通常の \hbar (水平の横
棒のもの) は 8 進数の 176 です。ただし、水平の横棒はイタリック体としてしか存在
しないことに注意してください。

7.5 太陽質量記号 (丸に点) が必要なときはどうしたらいいですか

Planck 定数と同様、最も自然な方法は UTF-8 フォントを使い、文字 $\odot$ (Unicode
コードポイント #x2299 ; "circled dot operator") を直接入力することです。非常に
よく似たグリフがコードポイント #x2609 にもあります。これは "sun" で、よりいいか
もしれませんが、それを提供するフォントは多くはありません。 Planck 定数と同様、
最も自然な方法は UTF-8 フォントを使い、文字 $\odot$ (Unicode \U+2299 ; "circled
dot operator") を直接入力することです。非常によく似たグリフ (Unicode コードポイ
ント \U+2609 ; "sun") はよりいいかもしれませんが、それを提供するフォントは多く
はありません。

7.6 ギリシャ文字や他の特別な記号を使うには

古いやり方として、特別なフォント、例えば Adobe の "Symbol" フォントに切り替える
ために拡張文字処理モード (enhanced text モード) を使用する方法があります。それ
は、あなたが出力したい文字に通常の ASCII 文字を割り当てています。これは、現在で
も PostScript 出力には必要でしょう。しかし、より簡単な方法は、UTF-8 エンコーデ
ィングを選択し、特殊文字を他の文字列と同様にそのまま入力することです。この方法
では、フォントの変更は必要なく、また CJK 文字集合を含むすべての Unicode コード
ポイントへのアクセスが可能になります。しかし gnuplot によって作られたファイルを
実際に印刷、表示するには、あなたのコンピュータ、あるいは出力デバイスに適切なフ
ォントがインストールされている必要があります。 gnuplot 自身にはフォントは含まれ
ていません。

いくつかの L^ATEX 系出力形式 (latex, epslatex, tikz, context, cairolatex) は、
生成した文字列を L^ATEX に渡します。この場合は、$\alpha_{3}$ ($\alpha_{3}$) の
ような、通常の L^ATEX 風の記述が利用できます。

7.7 どうしたらアクセント付きの文字を出力できますか

utf8 ではないエンコーディングを使い続けるのであれば、 ? (u ウムラウト; u の上に
点 2 つのアクセント) や n? のような文字をラベルに含めるには、適切なエンコードオ
プションを設定し、 8 ビット文字コードを使用しなければいけません。エスケープシー
ケンスを使って 8 ビットコードを表現することも可能です。例えば次のようにします。

gnuplot> set encoding iso_8859_1
gnuplot> set title "M\374nchner Bierverbrauch \374ber die Jahre"
gnuplot> plot "bier.dat" u 1:2

しかし、そうでない人は UTF-8 を使うべきで、そこではそれらは普通の文字になります
。

7.8 異なるサイズのテキストを一つのグラフで出力できますか

たいていの出力形式では、デフォルトフォントの名前とサイズを指定できます。「拡張
文字処理」モード ("enhanced text") では、フォント、および文字サイズやボールド、
イタリックの書体を一つのグラフ内で変更できます。

8 その他

8.1 gnuplot には画像形式 XXX をサポートするドライバはありますか

インストール済の gnuplot が使用できるグラフィックドライバの一覧を見るには、 set
term とタイプしてください。

ソース配布物には含まれていても、デフォルトでは使えないようになっているグラフィ
ックドライバもあります。それらが使いたければ、ソースからコンパイルし直す必要が
あります。

8.2 バグを見つけたのですがどうしたら良いですか

最初に、それが本当にバグなのか、それともある set コマンドで翻すことができる特徴
なのかを見極めてください。

次に、あなたが使っている gnuplot が古い版でないか確認してください。もしそうなら
、新しい版でそのバグは取り除かれている可能性があります。

レポートを送る前に、質問のバグが、現在のバージョンのリリース後以降のより新しい
ソースで既に修正されていないかチェックしてみてください。それらは、バグ tracker
では "pending-fixed" とマークされています。

これらをチェックした後でなおそれがバグであると確信したなら、 http://
sourceforge.net/p/gnuplot/bugs の bug-tracker で報告してください。その際、
gnuplot のバージョン (パッチレベルも含む) とそれが動いているオペレーティングシ
ステムも書いてください。特にそのエラーを再現する簡単なスクリプトを提供してもら
えると大いに助かります。

souceforge の tracker は、バグのレポート、および後のリリースに反映するためのバ
グの修正の収集のためのものです。 gnuplot に関する問題に対する回避策を見つける、
あるいはそれを実際に解決するには、インターネット上に色々存在するフォーラムの方
がよい場所でしょう。

8.3 "heavy-duty" データを gnuplot で使えますか、または gnuplot に代わるものはな
いですか

gnuplot それ自身は、しんどい数値計算にはあまり向いていません。しかし、かなり大
きなデータ集合 (100 万データ点程度) は簡単に処理できます。簡単ではない関数の評
価のための gnuplot の速度が制限を与えてしまうような特定のアプリケーションを使用
したい場合は、その関数を C か C++ でコーディングして作り、それをプラグインとし
て gnuplot で呼び出す、という方法もあります。

さらなる数値計算を必要とする場合は、以下のソフトを調べてみてください:

octave (http://www.octave.org) は、高水準言語で、主に数値計算用です。 Octave は
GPL ライセンスに従い、原則的にフリーな Matlab クローンです。線形や非線形の問題
を数値的に解くのに便利なコマンドラインインターフェースを備えています。なお、
octave は gnuplot を描画エンジンとして使いますので、 gnuplot の上位のデータ処理
ソフトを手に入れることにもなります。

scilab (http://www.scilab.org) は、別の、matlab に代わるオープンソースソフトで
す。

julia + Gaston (http://github.com/mbaz/Gaston.jl) Julia は、数値解析と計算機科
学用に設計された言語です。 Gaston は、グラフ出力用に gnuplot とのやりとりを提供
する julia パッケージです。

8.4 gnuplot が持たない特殊関数が必要な場合は

gnuplot バージョン 6 では、複素特殊関数のとても広いセットを提供しています。もし
あなたが必要とするものが含まれていなければ、他のプログラムを使うか、gnuplot 用
にカスタムプラグインを書くか、のいずれかが必要でしょう。

8.5 私の対話型ターミナルでホットキーを使うには

ほとんどの対話型出力形式では、再描画、各要素の描画のトグル、軸のスケールの変更
などを行うために、あらかじめ設定されたホットキー、およびユーザ定義可能なホット
キーの両方をサポートしています。現在有効な gnuplot の描画ウインドウ上で h を打
つと、ホットキーの一覧が表示されます。さらなる情報については、help mouse と 
help bind を参照してください。

8.6 gnuplot の次期バージョンの開発について知りたいのですがどうしたらいいですか

gnuplot のベータテストメーリングリストに入ってください。メール本文 (メールタイ
トルではなく) に subscribe gnuplot-beta と書いてメールを
Majordomo@lists.sourceforge.net に送ってください。

9 共通の問題

9.1 助けて! 私のフォントが使えない

gnuplot は、それ自身ではフォント処理を行いませんので、それは必然的に個々のデバ
イスをサポートするライブラリに任せることになります。残念ながらこれは、フォント
の検出においては、異なる出力形式には異なる説明が必要だということを意味しますの
で、ここでは、簡単なヒントをいくつか上げておきます。詳しい情報については、あな
たが問題にしている出力形式用の gnuplot のドキュメントを参照してください。

png/jpeg/gif
    これらの出力形式は、libgd というサポートライブラリを使用し、これは環境変数
    GDFONTPATH で与えられるディレクトリ内でフォントを探します。そのように libgd
    のフォントパスを設定すると、今度は gnuplot のデフォルトフォントを設定したい
    かもしれません。例:
    setenv GNUPLOT_DEFAULT_GDFONT verdana
post
    PostScript フォント名は、その文書が印刷されるまで参照されませんから、あなた
    のプリンタでどのフォントが有効であるかを gnuplot は知りません。よって、どん
    なフォント名でも指定することができます。しかし、gnuplot の出力にフォントを
    埋め込むことは可能です。それについては、 gnuplot の内部コマンド "help set
    term post fontfile" で得られる指示を参照してください。
svg
    フォント処理は、ビューワ依存です。
x11
    x11 出力形式は、通常の x11 フォントサーバ機構を使用しますが、少しだけトリッ
    キーな点があり、マルチバイトフォントを使用するためには、明示的に以下のよう
    に指定する必要があります:

    set term x11 font "mbfont:sazanami mincho,vera,20"

win
    ツールバーの "Options" のプルダウンメニューから "Choose font..." を選択しま
    す。
wxt, qt
    Linux システムでは、これらの出力形式はシステムの fontconfig ユーティリティ
    が提供するフォントを使用します。

9.2 qt 出力形式のセッションでの最初のグラフが失敗したり変なレイアウトになります

"slow font initialization" というエラーメッセージも出たかもしれません。これは、
qt が共有システムフォントキャッシュに依存しているからです。もし、他の誰も使って
いないフォントを要求すると、そのキャッシュの更新に時間がかかります。これは、
Windows や macOS ではよく起こるのですが、それらのシステムでは他のソフトが異なる
フォントの仕組みを使用する傾向にあるため、関連するフォントキャッシュが空になる
からです。 gnuplot の呼び出し時に、コマンドラインオプション -slow をつけてみて
ください。

9.3 pm3d によるデータファイルの splot で何も表示されません

set pm3d; splot 'a.dat' とやっても、カラーボックスは表示されるもののグラフは表
示されないとしたら、もしかしたら 2 つのつながっている線 (孤立線) を分離する空行
がないのでは ? 空行を入れなさい ! これが何を意味するのかに興味があるなら、
gnuplot の demo ディレクトリにある demo/glass.dat や demo/triangle.dat などのフ
ァイルをじっくり見てください。

以下の awk スクリプト (例えば addblanks.awk と呼ぶことにします) は有用で、デー
タファイルに、第 1 列目の数が変更したときに空行を追加してくれます。

/^[[:blank:]]*#/ {next} # コメント行 (# で始まる行) は無視
NF < 3 {next} # 3 列未満しかない行も無視
$1 != prev {printf "\n"; prev=$1} # 空行を出力
{print} # その行自体を出力

これにより、データファイルをコマンド awk -f addblanks.awk <a.dat によって前処理
するか、 unix 互換のプラットフォーム上でデータファイルを
gnuplot> splot "<awk -f addblanks.awk a.dat" のように描画するか、のどちらかを行
ってください。

9.4 なぜ gnuplot はとても小さい数字のデータを無視するのですか

gnuplot は、ある目的のため 1.e-08 より小さい数を 0 として扱います。よってとても
小さい数の集まりを描画しようとするとそれらは 0 として描画されてしまいます。対数
軸で描画する場合は、もっとひどいことにそれらは目盛りからはずれてしまいます。ま
た、全ての数が "0" である場合、範囲は空であるとみなされます:

gnuplot> plot 'test1'
Warning: empty y range [4.047e-19:3e-11], adjusting to [-1:1]
gnuplot> set yrange [4e-19 : 3e-11]
gnuplot> plot 'test1'
              ^
y range is less than `zero`

その対策は gnuplot の "zero" の概念を変更することです。

gnuplot> set zero 1e-20

より詳しい情報については help set zero を参照してください。

9.5 multiplot のグラフを replot や resize すると一かけらしか出ません

バージョン 5.4 の gnuplot は、直近の plot や splot コマンドを再生成するために十
分な情報を保持するだけだったので、 multiplot 全体を完全に再現するには、それを生
成する完全なコマンド列をスクリプトファイルに保存する必要がありました。そして、
load することでその内容を gnuplot に取り込めば、あなたが必要とする回数だけ異な
る出力形式、異なる出力ファイルに対して再描画をすることができました。

同じ制限が、対話型出力形式で multiplot を resize した場合にも起こっていました。
それは、resize イベントは通常 replot を実行しているからです。 qt と wxt 出力形
式は、ツールボックスウィジェット内に、 resize 時に replot することを抑制するト
グルスイッチを提供しています。 x11 出力形式は、option set term x11
noreplotonresize を提供しています。

gnuplot バージョン 6 では、multiplot でのすべての要素の再生成を自動化しました。
コマンド set multiplot があった場合、 gnuplot はコマンド群を
$PVAL_LAST_MULTIPLOT という名前付きデータブロックに保存します。終了するコマンド
unset multiplot を発行すると、このデータブロックを、multiplot を作成する plot
命令群を再描画するものに置き換えます。コマンド remultiplot を使用したときには、
それを明示的に行いますし、または直前の plot コマンドが multiplot の一部であると
きに replot コマンドかリサイズイベントを呼び出したときには、暗黙にそれを行いま
す。その間に、gnuplot の状態 (軸の範囲、線種、フォント等) を変更した場合、元の
コマンド群を再実行するとわずかに異なる結果になる可能性がある、という特徴は欠点
かもしれません。

9.6 書いた式 (1/3 など) が意味のない結果を出力してしまいます

gnuplot は整数の式の場合、実数演算ではなく整数演算を行ないます。例えば式 1/3 は
0 と評価されます。もし実数の値が欲しいならば、その数の後にドット "." をつけてく
ださい。例:

gnuplot> print 1/3
                0
gnuplot> print 1./3.
                0.333333

整数の式をこのようにして評価するやり方は C や Fortran でも行なわれています。

9.7 私の出力が不完全です

set output か unset output によって、たまっている出力を吐き出させ、そして出力を
クローズする必要があるかも知れません。

出力形式によっては、一つの出力ファイルに複数のページが含まれています
(postscript, pdf, latex, ...)。これらの出力モードでは、gnuplot はあなたが描画の
追加ができるように各描画後にファイルをオープンしたままにしています。よって set
か unset output コマンドを使用するか、異なる出力形式を選択する (set term) か、
または gnuplot を終了するまでは、そのファイルは完全ではなく、外部のアプリケーシ
ョンで使用できるようにはなっていません。

9.8 パイプやスクリプトから gnuplot を呼び出すとスクリーンにグラフがでません

よくある原因の一つが、gnuplot がグラフの描画直後に終了してしまうことで、終了時
に描画ウィンドウが閉じてしまうため、あなたがグラフを見れないぐらいにすべての表
示があっという間に終わってしまう、という状態です。これには、いくつかの解決法が
あります。

 ・ gnuplot のコマンドラインオプション -persist を使用すること。これは、gnuplot
    自身の終了後も描画ウィンドウを残します。
 ・ オプション set term で persist を受け付ける対話型出力形式を使用すること。
 ・ パイプの終了前に gnuplot にコマンド pause mouse close を送信すること。これ
    は、描画ウィンドウが他の動作で終了するまで gnuplot を終了させないように指示
    します。
 ・ あなたが gnuplot、および描画ウィンドウ等々を本当に必要としなくなった場合に
    のみ、スクリプトにパイプを閉じさせること。

以下は、これらの修正のうち 2 つを示す Perl スクリプトです:

#!/usr/local/bin/perl -w
open (GP, "|/usr/local/bin/gnuplot -persist") or die "no gnuplot";
# 各出力後に強制的にバッファを掃き出す
use FileHandle;
GP->autoflush(1);
print GP,"set term x11; plot sin(x) with lines\n";
print GP,"pause mouse close\n";
close GP

10 帰属

この FAQ は、 Russell Lang, John Campbell, David Kotz, Rob Cunningham, Daniel
Lewart, Alex Woo の寄与を John Fletcher が最初にまとめたものです。そして、Alex
Woo の草案により、 Alex Woo, John Campbell, Russell Lang, David Kotz らの修正と
追加、 Daniel Lewart による多くの修正が Thomas Koenig によりまとめ直されました
。そして、gnuplot 3.7 用に再び Lars Hecking, Hans-Bernhard Broeker およびその他
の人々による修正が Alexander Mai と Juergen v.Hagen によりまとめ直されました。 
gnuplot バージョン 4 用の修正は、 Petr Mikul?k と Ethan Merritt により行なわれ
ました。 gnuplot バージョン 5 および 6 用の修正は、 Ethan Merritt により行なわ
れました。

(訳注: 日本語訳は Shigeharu TAKENO (shige@iee.niit.ac.jp) により行なわれました
。)

この文書について...

gnuplot FAQ

この文書はLaTeX2HTML 翻訳プログラム Version 2023.2 (Released July 1, 2023)

を日本語化したもの (2023.2 JA patch-3.2beta1.38 (Released 2023-09-05) 版)

を用いて生成されました。

コマンド行は以下の通りでした。:
latex2html -split 0 -show_section_numbers -nobottom_navigation -entities -init
l2h-init faq-ja-20240902.tex

翻訳は 2024-09-04 に実行されました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 ・ 目次
 ・ 0 メタな質問
     □ 0.1 このドキュメントはどこで手に入れられますか
     □ 0.2 このドキュメントに関するコメントはどこに送れば良いですか

 ・ 1 一般的な質問
     □ 1.1 gnuplot とは何ですか
     □ 1.2 それはどこから来て、そしてなぜ gnuplot と呼ばれているのですか
     □ 1.3 gnuplot は何を提供してくれますか
     □ 1.4 gnuplot はスクリプトに適していますか
     □ 1.5 gnuplot は私のコンピュータで動かすことができますか
     □ 1.6 ライセンスについて
     □ 1.7 gnuplot は FSF や GNU プロジェクトと何か関係があるのですか
     □ 1.8 更なる情報はどこで手に入りますか

 ・ 2 インストール
     □ 2.1 gnuplot の最新バージョンは
     □ 2.2 gnuplot はどこで手に入れられますか
     □ 2.3 なぜ開発版を気にしなければいけませんか
     □ 2.4 gnuplot の最新の開発版はどこで手に入れられますか
     □ 2.5 gnuplot は私のシステムではどうコンパイルすれば良いですか
     □ 2.6 ドキュメントはどこですか、それはどうすれば手に入れられますか
     □ 2.7 動作するサンプル
     □ 2.8 私の gnuplot にどのオプションがコンパイルされているかを知るには

 ・ 3 動作
     □ 3.1 ヘルプはどうすれば手に入れられますか
     □ 3.2 どうすればグラフをプリントアウトできますか
     □ 3.3 どうすればグラフを私のワープロソフトに取り込めますか
     □ 3.4 どうすれば gnuplot のグラフを編集や後処理できますか
     □ 3.5 どうすれば現在の設定を保存/再利用できますか
     □ 3.6 一つのファイルに gnuplot のコマンドとデータの両方を書けますか
     □ 3.7 どうすれば描画前にデータにフィルタをかけられますか
     □ 3.8 私のプログラムで gnuplot のルーチンを利用できますか

 ・ 4 グラフの見た目のカスタマイズ
     □ 4.1 色や線や点記号のデフォルト属性を調べたり変更するには
     □ 4.2 陰線処理、隠面処理
     □ 4.3 グラフの境界をページの特定の位置に丁度合わせるには
     □ 4.4 複数のグラフをひとつのページ内で隣同士に配置するには
     □ 4.5 縦と横の軸の目盛りを 1:1 にできますか
     □ 4.6 カラーとモノクロの両方の出力で機能するようなパレットは
     □ 4.7 どうしたらデータ点をスキップできますか
     □ 4.8 どうしたら n 点毎にデータを扱えますか
     □ 4.9 どうしたら鉛直線を書けますか

 ・ 5 Y 軸のラベルの位置が悪い、あるい左の開きが大きすぎ
 ・ 6 良く質問されるグラフの形式
     □ 6.1 アニメーション
     □ 6.2 陰関数のグラフ
     □ 6.3 2 つの関数の間の領域を塗りつぶすには
     □ 6.4 3 次元データの 2 次元射影を描画するには
     □ 6.5 pm3d 色地図/曲面上に dots/points の散布図を重ねるには
     □ 6.6 ラベルつきの等高線を描画するには
     □ 6.7 gnuplot は棒グラフ/ヒストグラム/箱型グラフが書けますか
     □ 6.8 gnuplot は円グラフが書けますか、四半期グラフはどうですか
     □ 6.9 gnuplot は一つのグラフで複数の y 軸を使えますか
     □ 6.10 小 3 角面で構成される物体を描画するには
     □ 6.11 どうしたら 2 つの関数を重ならないように書けますか
     □ 6.12 どうしたら splot で格子でない曲線を書けますか
     □ 6.13 どうしたら x-y 平面上で他の関数に制限されている f(x,y) のグラフを
        書けますか

 ・ 7 文字列の整形と特別な記号
     □ 7.1 "enhanced text" モードによる文字列のマークアップ
     □ 7.2 文字列のマークアップをオンに/オフにするには
     □ 7.3 特殊文字に関するすべて問題の回答は UTF-8 にすることですか
     □ 7.4 Planck 定数 (h に横線) が必要なときはどうしたらいいですか
     □ 7.5 太陽質量記号 (丸に点) が必要なときはどうしたらいいですか
     □ 7.6 ギリシャ文字や他の特別な記号を使うには
     □ 7.7 どうしたらアクセント付きの文字を出力できますか
     □ 7.8 異なるサイズのテキストを一つのグラフで出力できますか

 ・ 8 その他
     □ 8.1 gnuplot には画像形式 XXX をサポートするドライバはありますか
     □ 8.2 バグを見つけたのですがどうしたら良いですか
     □ 8.3 "heavy-duty" データを gnuplot で使えますか、または gnuplot に代わる
        ものはないですか
     □ 8.4 gnuplot が持たない特殊関数が必要な場合は
     □ 8.5 私の対話型ターミナルでホットキーを使うには
     □ 8.6 gnuplot の次期バージョンの開発について知りたいのですがどうしたらい
        いですか

 ・ 9 共通の問題
     □ 9.1 助けて! 私のフォントが使えない
     □ 9.2 qt 出力形式のセッションでの最初のグラフが失敗したり変なレイアウトに
        なります
     □ 9.3 pm3d によるデータファイルの splot で何も表示されません
     □ 9.4 なぜ gnuplot はとても小さい数字のデータを無視するのですか
     □ 9.5 multiplot のグラフを replot や resize すると一かけらしか出ません
     □ 9.6 書いた式 (1/3 など) が意味のない結果を出力してしまいます
     □ 9.7 私の出力が不完全です
     □ 9.8 パイプやスクリプトから gnuplot を呼び出すとスクリーンにグラフがでま
        せん

 ・ 10 帰属
 ・ この文書について...

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
next_inactive up previous