- テキストファイルからのサンプルの散布図
- 対数螺旋
gnuplotは、関数、データ、データフィッティングの2次元および3次元プロットを生成できるコマンドラインおよびGUIプログラムです。このプログラムは、主要なコンピュータおよびオペレーティングシステム(Linux、Unix、Microsoft Windows、macOS、FreeDOSなど)で動作します。[ 4 ] 1986年に最初にリリースされ、その作者はThomas Williams、Colin Kelley、Russell Lang、Dave Kotz、John Campbell、Gershon Elber、Alexander Wooなどです。[ 5 ]その名前にもかかわらず、このソフトウェアはGNUプロジェクトの一部ではありません。
gnuplotは、画面に直接出力できるだけでなく、Portable Network Graphics (PNG)、Encapsulated PostScript (EPS)、Scalable Vector Graphics (SVG)、JPEGなど、様々な形式のグラフィックファイルで出力できます。また、LaTeXのフォントや強力な数式表記機能を活用し、LaTeX文書に直接組み込むことができるLaTeXコードを生成することもできます。このプログラムは、対話型モードでも、スクリプトを用いたバッチモードでも使用できます。[ 6 ]
gnuplot は、他のプログラムによって生成されたデータをオンザフライで読み取る機能 (パイピング)、1 つのイメージに複数のプロットを作成する機能、2D、3D、等高線プロット、パラメトリック方程式を実行する機能など、複数の形式でデータを読み取ることができます。また、さまざまな線形および非線形座標系、投影、地理データと時間データの読み取りと表示、さまざまな形式のボックス プロット、ヒストグラム、ラベル、および手動で設定したり、スクリプトで計算したり、入力データから自動的に設定したりできる、図形、テキスト、イメージなどのプロット上のその他のカスタム要素もサポートしています。
gnuplot は、スクリプト機能、ループ、関数、テキスト処理、変数、マクロ、入力データの任意の前処理 (通常は列全体)、および非線形多次元マルチセット重み付けデータ フィッティング (曲線フィッティングとLevenberg–Marquardt アルゴリズムを参照) を実行する機能も提供します。
gnuplot のコアコードはCでプログラムされています。Qt 、wxWidgets、LaTeX/TikZ/ConTeXt 経由の出力用のモジュラーサブシステムは C++ と Lua で書かれています。

以下のコードは右側のグラフを作成します。
タイトルを「いくつかの数学関数」に設定xrangeを[ -10 : 10 ]に設定yrangeを[ -2 : 2 ]に設定ゼロ軸をプロット( x / 4 ) ** 2 、sin ( x ) 、1 / xに設定このプログラムの名前はもともと「newplot」というプログラムとの競合を避けるために選ばれ、「llamaplot」と「nplot」の妥協案でした。[ 7 ]
バージョン5.4.2で流行日次および週次形式がサポートされたのは、コロナウイルスのパンデミックに関するデータのニーズに応えた結果です。[ 8 ]
gnuplotという名前にもかかわらず、gnuplotはGNUプロジェクトにちなんで名付けられたものではなく、GNUプロジェクトの一部でもなく、 GNU一般公衆利用許諾書も使用していません。gnuplotは、オリジナルの作者による妥協案として、gnu(動物)とnewplot(既に使用されていたため却下された名前)を組み合わせたものです。[ 10 ]
gnuplotの公式ソースコードは自由に再配布可能ですが、改変版は再配布できません。gnuplotライセンスでは、公式リリースに対するパッチの配布が認められており、オプションで公式リリースのソースコードを添付することも可能です。バイナリは、改変されていないソースコードと適用されたパッチと共に配布可能です。改変されたソフトウェアに関する技術サポートを受けるには、派生作品に連絡先情報を添付する必要があります。[ 3 ]
ソフトウェアの改変は許可されますが、改変されたソースコード全体を配布する権利は付与されません。改変されたソースコードは、リリース版へのパッチとして配布されます。
この制限にもかかわらず、gnuplotは多くのGNUパッケージに受け入れられ、使用されており、 DebianやFedoraなどの厳格なLinuxディストリビューションにも広く含まれています。OSIオープンソース定義とDebianフリーソフトウェアガイドラインでは、パッチとソースコードの両方の配布を明示的に許可している限りにおいて、改変されたソースコードの配布には制限を設けています。
新しい gnuplot モジュール (例: Qt、wxWidgets、cairo ドライバー) は、gnuplot + BSD または gnuplot + GPL などのデュアル ライセンス条件に基づいて提供されています。
いくつかのサードパーティ製プログラムには、gnuplotをプロットエンジンとして利用してグラフを生成できる グラフィカルユーザーインターフェース(GUI)が備わっています。具体的には以下のものがあります。
gnuplot を使用する他のプログラムには次のものがあります:
gnuplotは、C++(G3P経由)、Perl ( PDLおよびその他のCPANパッケージ経由)、Python(gnuplotlib、Gnuplot-py、SageMath経由)、R(Rgnuplot経由)、 Julia ( Gaston.jl経由)、Java(JavaGnuplotHybridおよびjgnuplot経由)、 Ruby ( Ruby Gnuplot経由)、Ch ( Ch Gnuplot経由)、Haskell ( Haskell gnuplot経由) 、 Fortran 95、[ 22 ] Smalltalk(SqueakおよびGNU Smalltalk)、Rust(RustGnuplot経由)など、さまざまなプログラミング言語からデータをグラフ化するために使用できます。
gnuplotはスクリプトに典型的なパイプもサポートしています。 [ 23 ]スクリプト駆動型グラフィックスの場合、gnuplotは最も人気のあるプログラムの1つです。
Gnuplotでは、いくつかの方法でプロットを表示したり保存したりすることができます。[ 24 ] [ 25 ]