歴史#

ノート

次の紹介テキストは、Matplotlib の元の作成者である John D. Hunter (1968-2012) によって 2008 年に書かれました。

Matplotlib は、Pythonで配列の 2D プロットを作成するためのライブラリです。これは MATLAB グラフィックス コマンドのエミュレートを起源としていますが、MATLAB から独立しており、Pythonic のオブジェクト指向の方法で使用できます。Matplotlib は主に純粋な Python で書かれていますが、 NumPyやその他の拡張コードを多用して、大きな配列に対しても優れたパフォーマンスを提供します。

Matplotlib は、いくつかのコマンド、または 1 つのコマンドだけで簡単なプロットを作成できるようにするという哲学に基づいて設計されています。データのヒストグラムを表示する場合、オブジェクトのインスタンス化、メソッドの呼び出し、プロパティの設定などを行う必要はありません。それはうまくいくはずです。

何年もの間、私は MATLAB をデータの分析と視覚化だけに使用していました。MATLAB は見栄えの良いプロットを簡単に作成することに優れています。EEG データを扱い始めたとき、データを操作するアプリケーションを作成する必要があることに気付き、MATLAB で EEG 分析アプリケーションを開発しました。アプリケーションが複雑になり、データベースや http サーバーとやり取りしたり、複雑なデータ構造を操作したりするにつれて、私はプログラミング言語としての MATLAB の限界に挑戦し始め、Python でやり直すことにしました。Python は、プログラミング言語としての MATLAB の欠点をすべて補って余りあるものですが、2D プロット パッケージを見つけるのに苦労していました (3D VTKについては、私のニーズをすべて上回っています)。

Python プロット パッケージを探しに行ったとき、いくつかの要件がありました。

  • プロットは見栄えがする必要があります-出版品質。私にとって重要な要件の 1 つは、テキストがきれいに見えることです (アンチエイリアスなど)。

  • TeX ドキュメントに含めるための Postscript 出力

  • アプリケーション開発用のグラフィカル ユーザー インターフェイスに組み込み可能

  • コードは、理解して拡張できるほど簡単でなければなりません

  • プロットの作成は簡単であるべき

私にぴったりのパッケージが見つからなかったので、私は自尊心のある Python プログラマーなら誰でもすることをしました。袖をまくり上げて飛び込みました。コンピューター グラフィックスの実際の経験がなかったので、MATLAB のプロット機能をエミュレートすることにしました。非常にうまくいきます。これには、多くの人が MATLAB の経験が豊富で、Python での蒸気プロットにすぐに慣れることができるという追加の利点がありました。開発者の観点からは、ユーザー コードに影響を与えずにコード ベースの中身を再設計できるため、固定ユーザー インターフェイス (pylab インターフェイス) を持つことは非常に便利です。

Matplotlib コードは、概念的に 3 つの部分に分けられ ます。pylab インターフェースは、ユーザーが MATLAB Figure 生成コード ( Pyplot チュートリアルpylab)と非常によく似たコードでプロットを作成できるようにするために提供される関数のセットです 。Matplotlib フロントエンドまたはMatplotlib APIは、図、テキスト、線、プロットなどを作成および管理するという面倒な作業を行うクラスのセットです (アーティストチュートリアル)。これは、出力について何も知らない抽象的なインターフェースです。バックエンドは、フロントエンド表現をハードコピーまたは表示デバイスに変換する、デバイス依存の描画デバイス (別名レンダラー) です (バックエンドとは?)。バックエンドの例: PS はPostScript®ハードコピーを作成し、SVG はスケーラブル ベクター グラフィックス ハードコピーを作成し、Agg は Matplotlib に同梱されている高品質のAnti-Grain Geometry ライブラリを使用して PNG 出力を作成し、GTK は Matplotlib を Gtk+ アプリケーションに組み込み、GTKAgg は Anti-Grain レンダラーを使用してFigure を作成し、それを Gtk+ アプリケーションに埋め込みます。PDFWxWidgetsTkinterなどについても同様です。

Matplotlib は、さまざまなコンテキストで多くの人々によって使用されています。PostScript ファイルを自動的に生成して印刷業者や出版社に送りたいと考える人もいます。また、Web アプリケーション サーバーに Matplotlib をデプロイして、動的に生成される Web ページに含める PNG 出力を生成するものもあります。Windows 上の Tkinter で Python シェルからインタラクティブに Matplotlib を使用する人もいます。私の主な用途は、Windows、Linux、および Macintosh OS X で実行される Gtk+ EEG アプリケーションに Matplotlib を埋め込むことです。


Matplotlib のオリジナルのロゴ (2003 -- 2008)。

(ソースコードpng )

../../_images/history-1.png

Matplotlib のロゴ (2008 - 2015)。

(ソースコードpng )

../../_images/history-2.png