ブログ

【Pythonチュートリアル】matplotlib入門|グラフ作成の基本と日本語対応

【Pythonチュートリアル】matplotlib入門|グラフ作成の基本と日本語対応

目次

※この記事にはプロモーションを含みます

WEBMASTERSのトップページへ

はじめに

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・細かいカスタマイズが可能論文品質のグラフ・特殊なグラフ・細部の調整
seabornmatplotlibのラッパー・統計グラフが簡潔に書ける相関行列・箱ひげ図・ペアプロットなどの統計可視化

seabornはmatplotlibをベースに動作するため、matplotlibを先に理解しておくとseabornの学習もスムーズです。実務ではmatplotlibとseabornを状況に応じて使い分けます。

matplotlibスキルをキャリアに活かす

matplotlibを使った可視化スキルは、以下のキャリアに直接つながります。

  • データアナリスト:分析結果のグラフ化・ダッシュボード作成
  • データサイエンティスト:EDA・モデル評価の可視化
  • AIエンジニア:学習曲線・モデル精度の可視化
  • Web開発者(バックエンド):集計データのグラフ生成・レポート自動化

Pythonとmatplotlibを活用したポートフォリオ(Jupyter Notebookで作成した分析レポートなど)は、転職・就職の場において実践力をアピールする効果的な手段になります。

matplotlibスキルを活かせるキャリア

まとめ

matplotlibはPythonで折れ線・棒・散布図・ヒストグラム・円グラフなど多様なグラフを描くための標準ライブラリです。plt.plot plt.bar plt.scatter plt.hist plt.pie の基本関数を使いこなすことで、ほとんどのデータ可視化ニーズに対応できます。

日本語の文字化けは japanize-matplotlib を導入することで簡単に解決でき、OS別のフォント指定も可能です。matplotlibの可視化スキルはデータアナリスト・AIエンジニアを目指す上で必須であり、ポートフォリオの充実にも直結します。