Python

Matplotlibとは?Pythonでグラフを描く使い方を入門から実践まで解説

Matplotlib(マットプロットリブ)とは、Pythonでグラフや図を描画するための定番のデータ可視化ライブラリです。折れ線グラフ・散布図・棒グラフ・ヒストグラムといった基本的なグラフから、3Dプロットやアニメーションまで幅広く作成できます。少ないコードでグラフを描ける手軽さと、細部まで調整できる高いカスタマイズ性を兼ね備えており、データ分析・科学計算・機械学習など多くの分野で使われています。本記事では、Matplotlibのインストールから基本的な使い方、各種グラフの描き方、日本語の表示設定、カスタマイズの方法までを、コード例つきでわかりやすく解説します。

Matplotlibとは:Pythonの定番データ可視化ライブラリ

まず、Matplotlibがどんなライブラリなのか、その概要と特徴を押さえておきましょう。

Matplotlibの基本

Matplotlibは、Pythonでさまざまな種類のグラフを描画できるライブラリです。折れ線グラフ、散布図、ヒストグラム、棒グラフ、円グラフなど、基本的なものから高度なものまで幅広く対応します。NumPypandasといったデータ処理ライブラリと組み合わせて使うことが多く、データの前処理をNumPyやpandasで行い、その結果をMatplotlibで可視化する、という流れが一般的です。Jupyter Notebookとの相性もよく、コードとグラフを並べてインタラクティブに分析できます。

開発の歴史

Matplotlibは2003年にJohn D. Hunter氏によって開発されました。もともとは科学計算の結果を可視化するために作られ、現在はオープンソースコミュニティによって開発が続けられています。2017年のバージョン2.0では、デフォルトのカラーマップが「viridis」に変更されるなど、スタイルが大きく刷新されました。2026年時点の安定版は3.10系で、現在も活発に更新が続いています(最新バージョンは公式サイトで確認できます)。

Matplotlibを使うのに必要な前提知識

Matplotlibを使い始めるには、基本的なPythonの知識(リスト、配列、ループ、関数など)があるとスムーズです。また、NumPyやpandasと組み合わせて使う場面が多いため、これらの基礎を知っておくと役立ちます。実行環境としては、PythonスクリプトやJupyter Notebookがよく使われます。

Matplotlibのインストールと最初のグラフ

ここでは、Matplotlibのインストール方法と、最初のグラフを描くまでの手順を説明します。

pipでインストールする

Matplotlibは標準ライブラリではないため、別途インストールが必要です。Pythonが入っていれば、pipで簡単にインストールできます。

pip install matplotlib

プロジェクトごとに環境を分けたい場合は、仮想環境を作ってからインストールするのがおすすめです。

python -m venv myenv
myenv\Scripts\activate   # Windows
pip install matplotlib

インストールできたか確認するには、Pythonで次のインポートがエラーなく通るかを試します。

import matplotlib.pyplot as plt

最初のグラフを描く

Matplotlibの基本は、matplotlib.pyplotpltという名前でインポートして使うことです。次のコードで、シンプルな折れ線グラフが描けます。

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.xlabel('x')
plt.ylabel('y')
plt.title('はじめてのグラフ')
plt.show()

plt.plot()でデータを渡し、plt.show()でグラフを表示します。この「データを渡して表示する」という流れが、Matplotlibのすべてのグラフに共通する基本パターンです。

Matplotlibで描ける主なグラフと使い方

Matplotlibでよく使うグラフを、最小限のコード例とともに紹介します。いずれもimport matplotlib.pyplot as pltを前提とします。

折れ線グラフ(plot)

時系列データや連続的な変化を表すのに使います。plt.plot()でx・yのデータを渡します。複数の系列を重ねる場合はplot()を複数回呼び、labelplt.legend()で凡例をつけます。

x = [1, 2, 3, 4, 5]
plt.plot(x, [2, 3, 5, 7, 11], label='系列1', color='blue')
plt.plot(x, [1, 4, 6, 8, 10], label='系列2', color='red', linestyle='--')
plt.legend()
plt.show()

Matplotlibで作成した折れ線グラフ(2系列を実線と破線で描き分けた例)

散布図(scatter)

2つの変数の関係や分布を見るのに使います。plt.scatter()でx・yを渡します。点のサイズ(s)や色(c)、透明度(alpha)を指定すると、情報量の多い散布図になります。

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.scatter(x, y, s=[20, 50, 80, 200, 500], c='green', alpha=0.5)
plt.show()

Matplotlibで作成した散布図(点のサイズと透明度を変えた例)

棒グラフ(bar)

カテゴリごとの数量を比較するのに使います。plt.bar()でラベルと値を渡します。横棒にしたい場合はplt.barh()を使います。

plt.bar(['A', 'B', 'C'], [10, 25, 15])
plt.show()

Matplotlibで作成した棒グラフ(A・B・Cのカテゴリ別の値を比較した例)

ヒストグラム(hist)

データの分布(どの範囲にどれだけ集中しているか)を見るのに使います。plt.hist()にデータと階級数(bins)を渡します。

data = [1, 2, 2, 3, 3, 3, 4, 4, 5]
plt.hist(data, bins=5)
plt.show()

Matplotlibで作成したヒストグラム(データの分布を5階級で表した例)

円グラフ(pie)

全体に占める割合を示すのに使います。plt.pie()に値とラベルを渡します。

plt.pie([40, 30, 30], labels=['A', 'B', 'C'], autopct='%1.1f%%')
plt.show()

Matplotlibで作成した円グラフ(割合をパーセント表示した例)

Matplotlibで日本語を表示する方法

Matplotlibはデフォルトのままだと、グラフ内の日本語が「□□□(豆腐)」のように文字化けすることがあります。日本語を正しく表示するには、日本語フォントを設定する必要があります。

日本語フォントを設定する

使用環境にある日本語フォントを指定する方法が確実です。Windowsならメイリオ(meiryo.ttc)などが利用できます。

import matplotlib.pyplot as plt
from matplotlib import font_manager

font_path = 'C:/Windows/Fonts/meiryo.ttc'
font_prop = font_manager.FontProperties(fname=font_path)
plt.rcParams['font.family'] = font_prop.get_name()

plt.plot([1, 2, 3], [1, 4, 9])
plt.title('日本語のタイトル')
plt.xlabel('横軸')
plt.show()

環境を問わず手軽に済ませたい場合は、日本語対応フォントをまとめて設定してくれるjapanize-matplotlibなどのライブラリを使う方法もあります。フォントが反映されない場合は、フォントのパスやファイル名が正しいか、Matplotlibのバージョンが新しいかを確認してください。

グラフを見やすくするカスタマイズ

Matplotlibは、グラフの細部を自由に調整できるのが強みです。ここではよく使うカスタマイズを紹介します。

ラベル・タイトル・凡例

軸ラベルはplt.xlabel()plt.ylabel()、タイトルはplt.title()で設定します。文字サイズはfontsizeで調整できます。複数系列を区別する凡例は、各グラフにlabelを付けてplt.legend()を呼ぶと表示されます。表示位置はlocで指定できます。

plt.xlabel('x', fontsize=12)
plt.ylabel('y', fontsize=12)
plt.title('グラフのタイトル', fontsize=14)
plt.legend(loc='upper left')

色・線種・マーカー

線の色はcolor、線種はlinestyle(実線’-‘、破線’–‘、一点鎖線’-.’など)、データ点の印はmarker(’o’や’x’など)で指定します。これらを使い分けると、複数系列を見分けやすくなります。

グリッド・スタイル

補助線(グリッド)はplt.grid(True)で表示できます。また、plt.style.use('ggplot')のようにスタイルを指定すると、全体の見た目をまとめて整えられます。あらかじめ用意されたスタイルのほか、自作のスタイルシートを使って統一感のあるグラフを再利用することもできます。

Matplotlibと他の可視化ライブラリの違い

Pythonの可視化ライブラリにはMatplotlib以外にもいくつかあります。代表的なものとの違いを押さえておくと、用途に応じて使い分けられます。

Seabornとの違い

SeabornはMatplotlibをベースにした、統計的な可視化に特化したライブラリです。少ないコードで見栄えのよい統計グラフを描けますが、内部ではMatplotlibが動いているため、細かい調整にはMatplotlibの知識が役立ちます。手軽に統計グラフを描きたいならSeaborn、細部まで作り込みたいならMatplotlib、という使い分けが基本です。

Plotlyとの違い

Plotlyは、マウス操作で拡大・ホバー表示ができるインタラクティブなグラフを得意とします。Webページに埋め込む動的なグラフならPlotly、論文や資料用の静的で高品質な図ならMatplotlib、というように目的で選ぶとよいでしょう。

Matplotlibを使う際のポイント

NumPy・pandasと組み合わせる

実務では、pandasで読み込んだデータをそのままMatplotlibに渡す使い方が一般的です。CSVファイルをpandasで読み込み、必要な列を取り出してグラフ化する、という流れを覚えておくと、実データの可視化にすぐ応用できます。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('data.csv')
plt.plot(df['date'], df['value'])
plt.show()

図のサイズと保存

図の大きさはplt.figure(figsize=(8, 4))で指定できます。作成したグラフをファイルに保存するには、plt.show()の代わりにplt.savefig('graph.png', dpi=300)を使います。dpiを上げると高解像度で保存でき、資料や論文にも使えます。

figsizeで横長に設定したMatplotlibのグラフ(マーカーとグリッドを追加した例)

まとめ:Matplotlibの基本を押さえてデータ可視化に活かす

Matplotlibは、Pythonでグラフを描くための定番ライブラリです。import matplotlib.pyplot as pltでインポートし、plt.plot()などでデータを渡してplt.show()で表示する、という共通のパターンを覚えれば、折れ線・散布図・棒グラフ・ヒストグラム・円グラフといった主要なグラフを描けるようになります。日本語の文字化けはフォント設定で解決でき、ラベル・凡例・色・スタイルのカスタマイズで見やすいグラフに仕上げられます。NumPyやpandasと組み合わせれば、実データの可視化にもそのまま使えます。まずは基本のグラフから手を動かして、少しずつカスタマイズを試していくとよいでしょう。

よくある質問(FAQ)

Q. Matplotlibの読み方は?

A. 「マットプロットリブ」と読みます。名称はMATLAB・plot・libraryを組み合わせた造語です。

Q. Matplotlibのインストール方法は?

A. pipを使い、コマンドでpip install matplotlibを実行するだけでインストールできます。Pythonとpipが入っていれば、追加の設定は基本的に不要です。

Q. グラフの日本語が文字化けします。どうすればいいですか?

A. デフォルトでは日本語フォントが設定されていないためです。メイリオなどの日本語フォントをfont_managerで指定するか、japanize-matplotlibのようなライブラリを使うと、日本語を正しく表示できます。

Q. MatplotlibとSeabornはどちらを使うべきですか?

A. 手軽に見栄えのよい統計グラフを描きたいならSeaborn、軸や色などを細かく作り込みたいならMatplotlibが向いています。SeabornはMatplotlibの上に作られているため、両方を組み合わせて使うこともできます。

Q. 作成したグラフを画像として保存できますか?

A. できます。plt.savefig('ファイル名.png', dpi=300)でPNGなどの画像として保存できます。dpiの値を上げると高解像度になります。

資料請求

RELATED POSTS 関連記事