【Pythonチュートリアル】matplotlib入門|グラフ作成の基本と日本語対応
技術
公開日: 2026/04/02
目次
※この記事にはプロモーションを含みます
はじめに
Pythonのデータ分析・機械学習学習で避けて通れないのが、グラフ描画ライブラリ「matplotlib(マットプロットリブ)」です。折れ線グラフ・棒グラフ・散布図・ヒストグラムなど、あらゆるグラフをシンプルなコードで作成できます。
ただし「グラフの日本語ラベルが文字化けする」というトラブルに多くの学習者が悩まされます。この記事ではmatplotlibのインストールから基本的なグラフの作り方、日本語フォントの設定方法まで、すぐに使えるコード付きで解説します。
matplotlibとは?
matplotlibの概要と特徴
matplotlib(マットプロットリブ)は、Pythonで数値データをグラフ化するためのデータ可視化ライブラリです。2003年にJohn D. Hunter氏が開発し、現在はオープンソースとして多くのコントリビューターにより維持されています。
matplotlibの主な特徴は以下の通りです。
- NumPy・pandasと組み合わせてデータ分析ワークフローに統合しやすい
- 折れ線・棒・散布図・ヒストグラム・円グラフなど多様なグラフに対応
- グラフのサイズ・色・フォント・レイアウトを細かくカスタマイズできる
- Jupyter Notebookとの相性が良く、インラインでグラフを表示できる
- PNGやPDFなど多様な形式でグラフを保存できる
データサイエンス・機械学習の分野では、pandasやscikit-learnと並ぶPythonの必須ライブラリのひとつです。
インストール方法
matplotlibはpipまたはcondaでインストールできます。
# pipを使う場合
pip install matplotlib
# Anaconda環境の場合
conda install matplotlib
インストール後、Pythonでインポートして動作を確認します。
import matplotlib
print(matplotlib.__version__) # バージョンが表示されればインストール成功
基本的なインポートと最初のグラフ
matplotlibは慣例として plt という別名でインポートします。
import matplotlib.pyplot as plt
# 最初のグラフ(折れ線グラフ)
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)
plt.title("My First Graph")
plt.xlabel("X軸")
plt.ylabel("Y軸")
plt.show()
plt.show() を実行すると、グラフウィンドウが表示されます。Jupyter Notebookの場合は %matplotlib inline をセルの先頭に記述することで、ノートブック内にインライン表示されます。
主要なグラフの作り方
折れ線グラフ・棒グラフ
折れ線グラフ(plt.plot)
時系列データや連続した変化の傾向を表すのに適しています。
import matplotlib.pyplot as plt
months = [1, 2, 3, 4, 5, 6]
sales = [100, 120, 90, 140, 130, 160]
plt.plot(months, sales, marker='o', color='#47d3ab', linewidth=2)
plt.title("月別売上推移")
plt.xlabel("月")
plt.ylabel("売上(万円)")
plt.grid(True)
plt.show()
棒グラフ(plt.bar)
カテゴリ間の比較に適しています。
import matplotlib.pyplot as plt
categories = ["A商品", "B商品", "C商品", "D商品"]
values = [300, 450, 200, 380]
plt.bar(categories, values, color='#fc557c')
plt.title("商品別売上比較")
plt.xlabel("商品名")
plt.ylabel("売上(万円)")
plt.show()
散布図・ヒストグラム
散布図(plt.scatter)
2つの変数の相関関係を見るのに適しています。
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(42)
x = np.random.randn(100)
y = x * 2 + np.random.randn(100)
plt.scatter(x, y, alpha=0.6, color='#47d3ab')
plt.title("散布図の例")
plt.xlabel("X変数")
plt.ylabel("Y変数")
plt.show()
ヒストグラム(plt.hist)
データの分布・頻度を確認するのに適しています。
import matplotlib.pyplot as plt
import numpy as np
data = np.random.normal(loc=170, scale=10, size=500) # 平均170、標準偏差10の正規分布
plt.hist(data, bins=30, color='#ffa0b6', edgecolor='white')
plt.title("身長の分布")
plt.xlabel("身長(cm)")
plt.ylabel("頻度")
plt.show()
円グラフ・その他のグラフ
円グラフ(plt.pie)
全体に対する各カテゴリの割合を示すのに適しています。
import matplotlib.pyplot as plt
labels = ["Python", "JavaScript", "Java", "その他"]
sizes = [40, 25, 20, 15]
explode = (0.05, 0, 0, 0) # Pythonのスライスを少し飛び出させる
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', startangle=90)
plt.title("プログラミング言語シェア")
plt.show()
グラフのカスタマイズ
タイトル・軸ラベル・凡例の設定
複数の系列を持つグラフでは、凡例(legend) の設定が重要です。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
y2 = [1, 3, 5, 4, 9]
plt.plot(x, y1, label="系列A", color='#47d3ab', linewidth=2)
plt.plot(x, y2, label="系列B", color='#fc557c', linewidth=2, linestyle='--')
plt.title("2系列の折れ線グラフ", fontsize=14)
plt.xlabel("X軸ラベル", fontsize=12)
plt.ylabel("Y軸ラベル", fontsize=12)
plt.legend(loc='upper left') # 凡例の位置
plt.grid(True, alpha=0.3)
plt.show()
色・線スタイル・マーカーの変更
matplotlibでは色・線スタイル・マーカーを細かく指定できます。
| パラメータ | 指定方法 | 例 |
|---|---|---|
| color(色) | 色名・HEX・RGB | 'red'・'#FF0000'・(1,0,0) |
| linewidth(線の太さ) | 数値(float) | linewidth=2.5 |
| linestyle(線スタイル) | 文字列 | '-'(実線)・'--'(破線)・':'(点線) |
| marker(マーカー) | 文字列 | 'o'(丸)・'s'(四角)・'^'(三角) |
| alpha(透明度) | 0〜1の数値 | alpha=0.7 |
複数のグラフを並べて表示する(subplot)
plt.subplot または plt.subplots を使うと、1つの図に複数のグラフを並べられます。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
fig, axes = plt.subplots(1, 2, figsize=(10, 4)) # 1行2列
axes[0].plot(x, np.sin(x), color='#47d3ab')
axes[0].set_title("sin(x)")
axes[0].set_xlabel("x")
axes[0].set_ylabel("y")
axes[1].plot(x, np.cos(x), color='#fc557c')
axes[1].set_title("cos(x)")
axes[1].set_xlabel("x")
axes[1].set_ylabel("y")
plt.tight_layout() # グラフ間の余白を自動調整
plt.show()
figsize=(幅, 高さ) でグラフ全体のサイズ(インチ単位)を指定できます。
matplotlib日本語フォントの設定方法
日本語が文字化けする原因
matplotlibはデフォルトで日本語フォントを持っていないため、グラフのタイトルや軸ラベルに日本語を使うと文字化け(□や?の表示)が発生します。
これはmatplotlibがデフォルトで「DejaVu Sans」などの欧文フォントを使用しており、日本語グリフ(字形データ)を含んでいないためです。解決するには、日本語対応フォントを明示的に指定する必要があります。
Windows・Macでの日本語フォント設定
Windowsの場合
WindowsではMSゴシックまたは游ゴシックが標準搭載されており、rcParams で指定できます。
import matplotlib.pyplot as plt
import matplotlib
# Windowsでの設定
matplotlib.rcParams['font.family'] = 'MS Gothic' # または 'Yu Gothic'
plt.plot([1, 2, 3], [4, 5, 6])
plt.title("日本語タイトル")
plt.xlabel("X軸(月)")
plt.ylabel("Y軸(売上)")
plt.show()
Macの場合
Macではヒラギノフォントが標準搭載されており、rcParams で指定できます。
import matplotlib.pyplot as plt
import matplotlib
# Macでの設定
matplotlib.rcParams['font.family'] = 'Hiragino Sans' # または 'Hiragino Maru Gothic Pro'
plt.plot([1, 2, 3], [4, 5, 6])
plt.title("日本語タイトル")
plt.show()
Linuxの場合
LinuxではIPAフォントを別途インストールして使用するのが一般的です。
# IPAフォントのインストール(Ubuntu/Debian系)
sudo apt-get install fonts-ipafont
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'IPAGothic'
japanize-matplotlibを使った簡単な解決方法
OS別の設定が面倒な場合は、japanize-matplotlib ライブラリを使うのが最も手軽です。
pip install japanize-matplotlib
インポートするだけで自動的に日本語フォントが有効になります。
import matplotlib.pyplot as plt
import japanize_matplotlib # これだけで日本語が使えるようになる
plt.plot([1, 2, 3, 4, 5], [10, 20, 15, 30, 25], marker='o')
plt.title("月別アクセス数推移")
plt.xlabel("月")
plt.ylabel("アクセス数(万)")
plt.grid(True, alpha=0.3)
plt.show()
japanize-matplotlib はすべてのOSで動作し、フォントのパス指定なども不要なため、学習者には特におすすめの方法です。
matplotlibとデータ分析キャリア
データ分析・機械学習での可視化の重要性
データサイエンスや機械学習のプロジェクトにおいて、データの可視化は以下の場面で不可欠です。
- 探索的データ分析(EDA) — データの分布・外れ値・相関関係をグラフで把握する
- 学習過程の確認 — 機械学習モデルの損失や精度の推移を折れ線グラフで追う
- 結果の報告 — ビジネスへの影響をステークホルダーに伝えるためのグラフ作成
- ポートフォリオの充実 — 分析結果を視覚的に表現したノートブックは採用担当者への強いアピールになる
matplotlibを使いこなせることは、データアナリスト・データサイエンティスト・AIエンジニアを目指す上で必須のスキルです。

seabornとの使い分け
matplotlibと並んでよく使われるのが seaborn(シーボーン) です。
| ライブラリ | 特徴 | 向いている用途 |
|---|---|---|
| matplotlib | 低レベルAPI・細かいカスタマイズが可能 | 論文品質のグラフ・特殊なグラフ・細部の調整 |
| seaborn | matplotlibのラッパー・統計グラフが簡潔に書ける | 相関行列・箱ひげ図・ペアプロットなどの統計可視化 |
seabornはmatplotlibをベースに動作するため、matplotlibを先に理解しておくとseabornの学習もスムーズです。実務ではmatplotlibとseabornを状況に応じて使い分けます。
matplotlibスキルをキャリアに活かす
matplotlibを使った可視化スキルは、以下のキャリアに直接つながります。
- データアナリスト:分析結果のグラフ化・ダッシュボード作成
- データサイエンティスト:EDA・モデル評価の可視化
- AIエンジニア:学習曲線・モデル精度の可視化
- Web開発者(バックエンド):集計データのグラフ生成・レポート自動化
Pythonとmatplotlibを活用したポートフォリオ(Jupyter Notebookで作成した分析レポートなど)は、転職・就職の場において実践力をアピールする効果的な手段になります。

まとめ
matplotlibはPythonで折れ線・棒・散布図・ヒストグラム・円グラフなど多様なグラフを描くための標準ライブラリです。plt.plot plt.bar plt.scatter plt.hist plt.pie の基本関数を使いこなすことで、ほとんどのデータ可視化ニーズに対応できます。
日本語の文字化けは japanize-matplotlib を導入することで簡単に解決でき、OS別のフォント指定も可能です。matplotlibの可視化スキルはデータアナリスト・AIエンジニアを目指す上で必須であり、ポートフォリオの充実にも直結します。