Matplotlibは、プログラミング言語Pythonおよびその科学計算用ライブラリNumPyのためのグラフ描画ライブラリである。オブジェクト指向のAPIを提供しており、様々な種類のグラフを描画する能力を持つ。描画できるのは主に2次元のプロットだが、3次元プロットの機能も追加されてきている。描画したグラフを各種形式の画像(各種ベクトル画像形式も含む)として保存することもできるし、wxPython、Qt、GTKといった一般的なGUIツールキット製のアプリケーションにグラフの描画機能を組みこむこともできる。MATLABの対話環境のようなものを提供するpylabというインタフェースも持っている。Matplotlibは、BSDスタイルのライセンスの下で配布されている。
matplotlibは、Pythonのバージョン2.6以降、およびPython 3をサポートしている[2]。 matplotlib 1.1.x以前は、Pythonのバージョン2.4から2.7までをサポートしていた。
オリジナルの開発者であるJohn Hunterは、癌治療による合併症のため、2012年8月28日に死去した[3]。しかし、matplotlibの開発にはその他多数の人間が貢献しており、2012年11月9日には、Python 3を初めてサポートするバージョン1.2.0がリリースされた。John HunterにはPythonソフトウェア財団より特別功労賞 (The 2012 Distinguished Service Award) が贈られた[4]。
matplotlibのpylabインタフェースは、MATLABの利用経験があるユーザがmatplotlibを簡単に習得できるように設計されている。
Python + Numpy + matplotlib + SciPy + etc. の組み合わせがMATLABに勝る点の例としては、以下のようなものが挙げられる。
折れ線グラフ
>>> 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のソースコードに付属するものもあれば、別途にダウンロードする必要のあるものもある。
この項目は、ソフトウェアに関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めています(PJ:コンピュータ/P:コンピュータ)。