Matplotlibで辞書データから同じグラフ上に複数の箱ひげ図(ボックスプロット)を作成する方法
PythonのMatplotlibを使えば、辞書型のデータから複数の箱ひげ図(ボックスプロット)を1つのグラフ上に簡単に描画できます。この記事では、その具体的な手順とコード例をわかりやすく解説します。
箱ひげ図を重ねて描画する基本の手順
辞書の各列(キー)ごとに箱ひげ図を作成し、同じグラフ上に表示するには、以下の手順に従います。
- 図のサイズを設定し、
figure.autolayoutを有効にしてサブプロット間や余白を自動調整します。 - 2つの列(キー)を持つ辞書 dict を作成します。
plt.subplots()で図(Figure)とサブプロット(Axes)のセットを生成します。ax.boxplot()に辞書の値を渡して、箱ひげ図を描画します。set_xticklabels()メソッドを使って、X軸の目盛りラベルに辞書のキー名を設定します。- 最後に
plt.show()メソッドで図を画面に表示します。
サンプルコード
以下は、2つの列を持つ辞書データから箱ひげ図を作成する完全なコード例です。
from matplotlib import pyplot as plt
# 図のサイズとレイアウトの自動調整を設定
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# 2列のデータを持つ辞書を作成
data = {'col1': [3, 5, 2, 9, 1], 'col2': [2, 6, 1, 3, 4]}
# 図とサブプロットを生成
fig, ax = plt.subplots()
# 辞書の値から箱ひげ図を描画
ax.boxplot(data.values())
# X軸のラベルに辞書のキー名を設定
ax.set_xticklabels(data.keys())
# グラフを表示
plt.show()実行結果
このコードを実行すると、col1 と col2 の2つのデータ系列が、それぞれ独立した箱ひげ図として同じグラフ上に並んで表示されます。X軸には辞書のキー名がラベルとして付与されるため、どの箱ひげ図がどのデータに対応しているのかひと目で把握できます。
ポイント解説
data.values()をそのままboxplot()に渡すことで、辞書内のすべてのリストが個別の箱ひげ図として処理されます。set_xticklabels()を使うことで、デフォルトの数値ラベル(1, 2, ...)を意味のある列名に置き換えられます。- データの列数が増えても、辞書に要素を追加するだけで自動的に対応できるため、拡張性の高い書き方です。
この手法は、複数グループのデータ分布を比較したい場合に非常に便利です。ぜひ自分のデータに応用してみてください。
-
MatplotlibでiPythonノートブックの図をファイルとして保存する方法
iPythonノートブック上で作成した図(グラフ)を画像ファイルとして保存したい場合、Matplotlibの機能を使えば簡単に実現できます。ここでは、基本的な手順とサンプルコードを紹介します。 図をファイルに保存する手順 iPythonから図をファイルとして保存するには、以下の手順を実行します。 plt.figure() で新しい図を作成するか、既存の図をアクティブにします。 add_axes() メソッドを使って、図に axes(座標軸)を追加します。 プロットしたいデータ(リストなど)を plot() で描画します。 savefig() メソッドを使って、図をファイルとして保存します。
-
PythonとMatplotlibで複数のプロットを1つの図に描画する方法
Matplotlibは、データ可視化のために広く利用されている人気のPythonパッケージです。データの可視化は非常に重要なステップです。生の数値を目で追ったり複雑な計算を実行したりしなくても、データの中で何が起きているのかを直感的に把握できるようになるからです。また、定量的な洞察を聴衆に対して効果的に伝える手段としても役立ちます。Matplotlibは、データをもとに2次元のプロットを作成するために使われます。オブジェクト指向のAPIを備えており、Pythonアプリケーションへプロットを簡単に組み込むことができます。IPythonシェル、Jupyter Notebook、Spyderなどの開