こんにちは、小澤です。
今回は、Matplotlibについて紹介します。Matplotlibは、Pythonのデータ可視化ライブラリとして広く使用されており、データを視覚的に表現・分析するための非常に強力なツールです。このライブラリを活用することで、多様なグラフを簡単に作成できます。また、NumPy、SciPy、Pandasなどの他のライブラリともシームレスに統合できるため、データ分析において欠かせない存在となっています。Matplotlibを使いこなすことで、データの傾向や特性を効果的に伝えることが可能です。
教科書『Pythonによる新しいデータ分析の教科書(第2版)』の4.3章「Matplotlib」(178ページ〜213ページ)では、このライブラリの使用方法について詳しく解説されています。
Matplotlibの概要
Matplotlibは、Pythonで2Dや3Dのグラフを描画するためのライブラリです。NumPyと組み合わせて使用されることが多く、シンプルな折れ線グラフから複雑なヒートマップや3Dグラフまで、多彩なグラフをサポートしています。
Matplotlibを使用するにはライブラリをインストールします。pipコマンドを実行してください。
pip install matplotlib |
そして、Pythonスクリプトではインポートして使います。pyplotモジュールをpltという別名でインポートするのが一般的です。
import matplotlib.pyplot as plt |
pyplotインターフェース
Matplotlibには、使いやすい高水準の描画インターフェースであるpyplotモジュールがあります。これは、数値解析ソフトのMATLABのようなコマンドスタイルの関数を提供し、簡単にグラフを作成できるものです。例えば、以下は、シンプルな折れ線グラフを表示するサンプルコードです。
import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [10, 15, 20, 25, 30] plt.plot(x, y) plt.xlabel(‘x label’) plt.ylabel(‘y label’) plt.title(‘pyplot interface’) plt.show() |
描画オブジェクト
Matplotlibの描画は、主に以下の2つのオブジェクトを中心に行われます。
- figure(図全体)
figureは、グラフ全体を表すオブジェクトで、キャンバスとも呼ばれます。複数のaxesを含めることができ、一つのfigure内に複数のプロットを配置して複雑なレイアウトを作成できます。
fig = plt.figure() |
- axes(プロット領域)
axesは、実際にデータを描画する領域で、タイトル、軸ラベル、目盛りなどの要素を持ちます。figure内に複数のaxesを配置してサブプロットを作成することが可能です。
ax = fig.add_subplot(1, 1, 1) # 1行1列のサブプロットを作成 |
出力方法
Matplotlibで作成したグラフは、さまざまな方法で出力できます。
- 画面に表示
plt.show()を使用すると、グラフを画面に表示できます。
plt.plot(x, y) plt.show() |
- ファイルに保存
plt.savefig()を使用すると、グラフを画像ファイルとして保存します。PNG、JPEG、PDF、SVGなどの形式をサポートしています。ファイル形式はファイル名の拡張子から自動判別されます。
以下のサンプルコードでは、ファイル名を「graph.png」とし、dpiで解像度を指定、bbox_inches=’tight’で余白を最小限に設定しています。
plt.plot(x, y) plt.savefig(‘graph.png’, dpi=300, bbox_inches=’tight’) |
- Jupyter Notebookでの表示
Jupyter Notebookでグラフを表示する場合、「%matplotlib inline」マジックコマンドを使用します。
%matplotlib inline import matplotlib.pyplot as plt plt.plot(x, y) plt.show() |
グラフの種類
Matplotlibはさまざまなグラフをサポートしています。主なものを以下に紹介します。
- 折れ線グラフ(Line Plot)
時系列データや連続データの傾向を示すのに使います。
import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 3, 5, 7, 11] plt.plot(x, y) plt.show() |
- 散布図(Scatter Plot)
データポイントの分布や相関関係を視覚化します。
import matplotlib.pyplot as plt x = [5, 7, 8, 7, 2, 17, 2, 9] y = [99, 86, 87, 88, 111, 86, 103, 87] plt.scatter(x, y) plt.show() |
- 棒グラフ(Bar Chart)
カテゴリデータの比較に適しています。
import matplotlib.pyplot as plt categories = [‘A’, ‘B’, ‘C’, ‘D’] values = [10, 15, 7, 12] plt.bar(categories, values) plt.show() |
- ヒストグラム(Histogram)
データの頻度分布を示します。
import matplotlib.pyplot as plt import numpy as np data = np.random.randn(1000) plt.hist(data, bins=30) plt.show() |
- 箱ひげ図(Box Plot)
データの分布特性(中央値、四分位範囲など)を視覚化します。
import matplotlib.pyplot as plt import numpy as np data = [np.random.randn(100) for _ in range(5)] plt.boxplot(data) plt.show() |
- 円グラフ(Pie Chart)
全体に対する各部分の割合を示します。
import matplotlib.pyplot as plt labels = [‘A’, ‘B’, ‘C’, ‘D’] sizes = [15, 30, 45, 10] plt.pie(sizes, labels=labels, autopct=’%1.1f%%’) plt.show() |
- 等高線図(Contour Plot)
3次元データを2次元で表現し、等高線で値の変化を示します。
import matplotlib.pyplot as plt import numpy as np x = np.linspace(-3, 3, 100) y = np.linspace(-3, 3, 100) X, Y = np.meshgrid(x, y) Z = np.sin(X**2 + Y**2) plt.contour(X, Y, Z) plt.show() |
- ヒートマップ(Heatmap)
行列形式のデータを色の濃淡で表現します。
import matplotlib.pyplot as plt import numpy as np data = np.random.rand(10, 10) plt.imshow(data, cmap=’hot’, interpolation=’nearest’) plt.colorbar() plt.show() |
まとめ
Matplotlibは、Pythonでデータを可視化するために使用される基本的なライブラリで、以下のような特徴があります。
- 折れ線グラフ、散布図、棒グラフなど、さまざまな種類のグラフを簡単に作成できます。
- pyplotモジュールを利用することで、シンプルなコードでグラフを描画できます。
- 軸、ラベル、タイトル、色、スタイルなど、自由にカスタマイズ可能です。
- 画面表示、画像ファイルへの保存、Jupyter Notebookでのインライン表示など、用途に応じて、さまざまな方法でグラフを出力できます。
Matplotlibを活用すれば、プレゼンテーションやレポートの作成において視覚的に訴求できる資料を作成することができるでしょう。
次回からは、機械学習で広く使われているscikit-learnについて説明します。次回もお楽しみに。