コンテンツにスキップ

Matplotlib

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。Tarepan (会話 | 投稿記録) による 2025年7月12日 (土) 02:59個人設定で未設定ならUTC)時点の版 (追加: 出典付き定義、機能)であり、現在の版とは大きく異なる場合があります。

matplotlib
開発元 John D. Hunter, Michael Droettboom など
最新版 3.10.3[1] ウィキデータを編集 - 2025年5月9日 (2か月前) [±]
リポジトリ ウィキデータを編集
使用エンジン
  • cairo
  • Anti-Grain Geometry
ウィキデータを編集
プラットフォーム クロスプラットフォーム
種別 グラフ作成
ライセンス matplotlib licence
公式サイト matplotlib.org ウィキデータを編集
テンプレートを表示

MatplotlibまっとぷろっとりぶPython向けグラフ描画ライブラリの一種である[2]

概要

プログラミング言語Pythonおよびその科学計算用ライブラリNumPyのためのグラフ描画ライブラリである。オブジェクト指向APIを提供しており、様々な種類のグラフを描画する能力を持つ。描画できるのは主に2次元のプロットだが、3次元プロットの機能も追加されてきている。描画したグラフを各種形式の画像(各種ベクトル画像形式も含む)として保存することもできるし、wxPythonQtGTKといった一般的なGUIツールキット製のアプリケーションにグラフの描画機能を組みこむこともできる。MATLABの対話環境のようなものを提供するpylabというインタフェースも持っている。Matplotlibは、BSDスタイルのライセンスの下で配布されている。

matplotlibは、Pythonのバージョン2.6以降、およびPython 3をサポートしている[3]。 matplotlib 1.1.x以前は、Pythonのバージョン2.4から2.7までをサポートしていた。

オリジナルの開発者であるJohn Hunterは、癌治療による合併症のため、2012年8月28日に死去した[4]。しかし、matplotlibの開発にはその他多数の人間が貢献しており、2012年11月9日には、Python 3を初めてサポートするバージョン1.2.0がリリースされた。John HunterにはPythonソフトウェア財団より特別功労賞 (The 2012 Distinguished Service Award) が贈られた[5]

機能

バックエンド

実際の描画を担う要素は backendばっくえんどと呼ばれる[6]。Matplotlib は様々なバックエンドをサポートする。以下はその一例である:

表. Matplotlib バックエンドの一覧[7]
名称 タイプ 出力先 出力形式
ラスター ベクター
AGG 非インタラクティブ .png -
PDF .pdf -
PS .ps.eps -
SVG .svg -
PGF .pgf、.pdf -
Cairo .png.ps.pdf.svg
QtAgg インタラクティブ Qt
ipympl Jupyter Notebook / ipympl
GTK4Agg GTK
macosx macOS / Cocoa
TkAgg Tk
WebAgg Webブラウザ / Tornado
GTK4Cairo GTK
wxAgg WxWidgets

古い環境向けのバックエンドとしては GTK3AggnbAggGTK3Cairo、などがある。

MATLABとの比較

matplotlibのpylabインタフェースは、MATLABの利用経験があるユーザがmatplotlibを簡単に習得できるように設計されている。

Python + Numpy + matplotlib + SciPy + etc. の組み合わせがMATLABに勝る点の例としては、以下のようなものが挙げられる。

  • MATLABのような特定用途向けの言語ではなく、大規模なソフトウェア開発も可能な現代的オブジェクト指向言語であるPythonをベースにしている。
  • 素早くスクリプトを書くのに向いている。CGIスクリプトを作ることもできる。
  • フリーかつオープンソースである。ライセンスサーバも必要ない。
  • ネイティブなSVGのサポート。

プロット例

折れ線グラフ

>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> a = np.linspace(0,10,100)
>>> b = np.exp(-a)
>>> plt.plot(a,b)
>>> plt.show()

ヒストグラム

>>> import matplotlib.pyplot as plt
>>> from numpy.random import normal,rand
>>> x = normal(size=200)
>>> plt.hist(x,bins=30)
>>> plt.show()

散布図

>>> import matplotlib.pyplot as plt
>>> from numpy.random import rand
>>> a = rand(100)
>>> b = rand(100)
>>> plt.scatter(a,b)
>>> plt.show()

3Dグラフ

>>> from matplotlib import cm
>>> from mpl_toolkits.mplot3d import Axes3D
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> fig = plt.figure()
>>> ax = fig.gca(projection='3d')
>>> X = np.arange(-5, 5, 0.25)
>>> Y = np.arange(-5, 5, 0.25)
>>> X, Y = np.meshgrid(X, Y)
>>> R = np.sqrt(X**2 + Y**2)
>>> Z = np.sin(R)
>>> surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm)
>>> plt.show()

ツールキット

Matplotlibの機能を拡張するためのいくつかのツールキットが存在する。Matplotlibのソースコードに付属するものもあれば、別途にダウンロードする必要のあるものもある。

  • Basemap: 様々な投影法・海岸線・政治的国境による地図の描画
    • 現在は cartopy の使用が推奨されている
  • Mplot3d: 3次元プロット
  • Natgrid: natgridライブラリ用のインタフェース
  • Excel tools: Microsoft Excelとのデータ交換を行なうユーティリティ
  • GTK tools: GTKライブラリ用のインタフェース

脚注

  1. ^ "Release 3.10.3"; 閲覧日: 2025年5月27日; 出版日: 2025年5月9日.
  2. ^ Pythonでグラフ作成に用いる定番のライブラリが「Matplotlib」です。立山, 秀利 (2024-11-25). “データを可視化する「Matplotlib」、Pythonで棒グラフも円グラフも自由自在”. 日経クロステック. https://xtech.nikkei.com/atcl/nxt/column/18/02983/102300001/. 
  3. ^ What's new in matplotlib”. 2012年11月13日閲覧。
  4. ^ John Hunter Memorial Fund”. 2012年11月13日閲覧。
  5. ^ PSF Distinguished Service Awards”. 2013年2月16日閲覧。
  6. ^ Backends are used for displaying Matplotlib figures ... Matplotlib can target different outputs, and each of these capabilities is called a backend(Matplotlib 2025a)
  7. ^ (Matplotlib 2025a)

参考文献

  • Backends”. Matplotlib 3.10.3 documentation. 2025年7月12日閲覧。

外部リンク