2.

matplotlibとは|Pythonでグラフを描く基本(plot/bar/scatter)と日本語対応

編集

matplotlib(マットプロットリブ)は、Pythonでグラフや図を描画するための代表的な可視化ライブラリです。折れ線・棒・散布・ヒストグラム・円など多彩なグラフを少ないコードで作成でき、データ分析や機械学習の現場で広く利用されています。本記事では、インストールから基本的な描画、グラフの種類、ラベルや凡例の付け方、画像保存、pandasやNumPyとの連携、そして日本語表示の落とし穴までをまとめて解説します。

この記事の要点
  • matplotlibはPythonでグラフを描画する代表的な可視化ライブラリ。
  • インストールは pip install matplotlib、利用時は import matplotlib.pyplot as plt が一般的。
  • 基本は plt.plot() でデータを設定し plt.show() で表示する。
  • 折れ線(plot)・棒(bar)・散布(scatter)・ヒストグラム(hist)・円(pie)など多様なグラフに対応。
  • xlabel / ylabel / title / legend で軸ラベル・タイトル・凡例を付けられる。
  • savefig() で画像ファイルとして保存できる。
  • 日本語が豆腐(□)になる場合はフォント設定で対処する。

 

matplotlibとは

matplotlibは、Pythonでグラフや図を描画するためのオープンソースの可視化ライブラリです。数値データを折れ線グラフや棒グラフなどの図として視覚化することで、データの傾向や分布を直感的に把握しやすくなります。

多くの場合、グラフ描画用のモジュールである matplotlib.pyplotplt という別名でインポートして利用します。pyplot はMATLABに似た操作感で手軽にグラフを描けるよう設計されており、Pythonの可視化を学ぶ最初の一歩として広く使われています。

また、データ分析でよく使われるNumPypandasと組み合わせやすいことも特長です。これらのライブラリで処理したデータをそのままmatplotlibに渡してグラフ化する、という流れが一般的です。

インストールとインポート

matplotlibは標準ライブラリではないため、利用前にインストールが必要です。多くの環境ではパッケージ管理ツールの pip でインストールできます。

pip install matplotlib

インストール後、Pythonコード内では次のようにインポートして使うのが一般的です。as plt と別名を付けることで、以降は plt. という短い記述で各機能を呼び出せます。

import matplotlib.pyplot as plt

Anaconda などのディストリビューションには、matplotlibが最初から含まれている場合もあります。その場合は改めてインストールせずにインポートするだけで利用できます。

基本的なグラフ描画

matplotlibの最も基本的な使い方は、plt.plot() でグラフのデータを設定し、plt.show() で画面に表示するという流れです。次は、数値データの折れ線グラフを描く最小限のコード例です。

import matplotlib.pyplot as plt

# グラフにするデータ
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# データの設定(折れ線グラフ)
plt.plot(x, y)

# グラフの表示
plt.show()

このコードを実行すると、x軸の値に対応するy軸の値が折れ線として描画されたウィンドウが表示されます。NumPyを使ってデータを生成し、凡例(ラベル)を付けた場合は次のような描画になります。

import matplotlib.pyplot as plt
import numpy as np

# データの作成
x = np.arange(-2, 4, 0.5)
y = np.sin(x)

# データの設定
plt.plot(x, y, label="label-1")

# 凡例の表示
plt.legend()

# グラフの表示
plt.show()

上記コードの実行結果は、次のようなサインカーブの折れ線グラフになります。

 

主なグラフの種類

matplotlibでは、用途に応じてさまざまな種類のグラフを描画できます。グラフの種類は、plt.plot() の部分を別の関数に変えることで切り替えられます。代表的なものを次の表にまとめます。

グラフの種類 関数 主な用途
折れ線グラフplt.plot()時間や順序に沿った値の変化を表す
棒グラフplt.bar()カテゴリごとの量を比較する
散布図plt.scatter()2つの値の相関や分布を見る
ヒストグラムplt.hist()データの度数分布を確認する
円グラフplt.pie()全体に占める割合を表す

たとえば棒グラフを描くには、次のように plt.bar() を使います。横方向の棒グラフにしたい場合は plt.barh() を用います。

import matplotlib.pyplot as plt

labels = ["A", "B", "C"]
values = [10, 25, 15]

plt.bar(labels, values)
plt.show()

ラベル・タイトル・凡例の設定

グラフに軸ラベルやタイトル、凡例を付けると、何を表したグラフなのかが分かりやすくなります。よく使う設定用の関数は次のとおりです。

関数 役割
plt.xlabel()x軸(横軸)のラベルを設定する
plt.ylabel()y軸(縦軸)のラベルを設定する
plt.title()グラフのタイトルを設定する
plt.legend()凡例を表示する(plot時のlabel指定が必要)

これらを組み合わせると、次のように説明の付いたグラフを描けます。legend() は、plot() などで label を指定したうえで呼び出すと、その内容が凡例として表示されます。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

plt.plot(x, y, label="data")

plt.xlabel("x axis")
plt.ylabel("y axis")
plt.title("sample graph")
plt.legend()

plt.show()

グラフを画像として保存する

作成したグラフを画面に表示するだけでなく、画像ファイルとして保存することもできます。保存には plt.savefig() を使い、引数にファイル名を渡します。拡張子によってPNGやPDFなど出力形式が決まります。

plt.plot(x, y)

# 画像ファイルとして保存
plt.savefig("graph.png")

注意点として、savefig()show() を呼び出すより前に実行する必要があります。show() の後ではグラフの内容がクリアされ、空の画像が保存される場合があるためです。

pandasやNumPyとの連携

matplotlibは、数値計算ライブラリのNumPyや、表形式データを扱うpandasと組み合わせて使われることが多くあります。NumPyの配列をそのまま plt.plot() に渡したり、pandasの DataFrameSeries のデータを描画したりできます。

pandas自体も内部でmatplotlibを利用した描画機能を備えており、DataFrame に対して .plot() メソッドを呼ぶと簡単にグラフを作成できます。次は、pandasで作ったデータをグラフ化する例です。

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({"value": [3, 6, 2, 8, 5]})

# DataFrameから直接グラフを描画
df["value"].plot()
plt.show()

よくある落とし穴

matplotlibを使い始めたときに遭遇しやすいつまずきポイントを、原因と対処の観点でまとめます。

症状 主な原因と対処
日本語が豆腐(□)になる標準フォントが日本語に対応していないことが原因。日本語対応フォントを指定するか、日本語フォント設定を行うライブラリを併用する。
グラフが表示されないplt.show() の呼び出し忘れが多い。最後に show() を実行する。
実行環境によって挙動が違う描画を担うバックエンドが環境ごとに異なるため。ノートブックでは表示用の設定が必要な場合がある。

特に日本語表示の文字化けはよく起こります。日本語対応フォントを指定する基本的な方法は次のとおりです(フォント名は環境にインストールされているものに合わせて指定します)。

import matplotlib.pyplot as plt

# 日本語対応フォントを指定(例)
plt.rcParams["font.family"] = "MS Gothic"

plt.title("日本語のタイトル")
plt.plot([1, 2, 3])
plt.show()

よくある質問(FAQ)

Q. matplotlibとpyplotは違うものですか。
matplotlibはライブラリ全体の名前で、pyplot はその中に含まれるグラフ描画用のモジュールです。手軽にグラフを描く目的では、通常 import matplotlib.pyplot as plt として pyplot を使います。

Q. グラフが画面に出ないのはなぜですか。
最後に plt.show() を呼び出していないことが原因として多く見られます。また、実行環境(ターミナル、ノートブックなど)によって表示方法が異なるため、利用する環境に合った設定が必要になる場合もあります。

Q. 日本語のラベルが文字化けします。どうすればよいですか。
標準のフォントが日本語に対応していないことが原因です。日本語対応フォントを指定するか、日本語表示を補助するライブラリを併用することで解消できます。利用環境にインストール済みのフォントを確認して指定するとよいでしょう。

 

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. pandas
  2. matplotlib

最近更新/作成されたページ