Matplotlibとは?Pythonでグラフを描く使い方を入門から実践まで解説
Matplotlib(マットプロットリブ)とは、Pythonでグラフや図を描画するための定番のデータ可視化ライブラリです。折れ線グラフ・散布図・棒グラフ・ヒストグラムといった基本的なグラフから、3Dプロットやアニメーションまで幅広く作成できます。少ないコードでグラフを描ける手軽さと、細部まで調整できる高いカスタマイズ性を兼ね備えており、データ分析・科学計算・機械学習など多くの分野で使われています。本記事では、Matplotlibのインストールから基本的な使い方、各種グラフの描き方、日本語の表示設定、カスタマイズの方法までを、コード例つきでわかりやすく解説します。
目次
Matplotlibとは:Pythonの定番データ可視化ライブラリ
まず、Matplotlibがどんなライブラリなのか、その概要と特徴を押さえておきましょう。
Matplotlibの基本
Matplotlibは、Pythonでさまざまな種類のグラフを描画できるライブラリです。折れ線グラフ、散布図、ヒストグラム、棒グラフ、円グラフなど、基本的なものから高度なものまで幅広く対応します。NumPyやpandasといったデータ処理ライブラリと組み合わせて使うことが多く、データの前処理を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.pyplotをpltという名前でインポートして使うことです。次のコードで、シンプルな折れ線グラフが描けます。
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()を複数回呼び、labelとplt.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()

散布図(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()

棒グラフ(bar)
カテゴリごとの数量を比較するのに使います。plt.bar()でラベルと値を渡します。横棒にしたい場合はplt.barh()を使います。
plt.bar(['A', 'B', 'C'], [10, 25, 15])
plt.show()

ヒストグラム(hist)
データの分布(どの範囲にどれだけ集中しているか)を見るのに使います。plt.hist()にデータと階級数(bins)を渡します。
data = [1, 2, 2, 3, 3, 3, 4, 4, 5]
plt.hist(data, bins=5)
plt.show()

円グラフ(pie)
全体に占める割合を示すのに使います。plt.pie()に値とラベルを渡します。
plt.pie([40, 30, 30], labels=['A', 'B', 'C'], autopct='%1.1f%%')
plt.show()

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を上げると高解像度で保存でき、資料や論文にも使えます。

まとめ: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の値を上げると高解像度になります。