Pandasデータフレームの列を使ってバブルチャート・散布図にラベルを付ける方法
MatplotlibとPandasを組み合わせると、データフレームの列の値をラベルとして、バブルチャートや散布図の各プロット点に注釈(アノテーション)を付けることができます。ここでは、その具体的な手順を解説します。
実装の手順
- 図のサイズを設定し、サブプロット間および周囲のパディングを調整します。
- 2次元のサイズ変更可能な表形式データを持つデータフレーム(df)を作成します。
- 作成したdfをもとに散布図を描画します。
annotate()メソッドを使って、各データポイントにテキストラベルを追加します。show()メソッドで図を表示します。
コード例
import pandas as pd
from matplotlib import pyplot as plt
# 図のサイズを設定
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
# データフレームを作成
df = pd.DataFrame(
dict(
x=[1, 3, 2, 4, 5],
y=[0, 3, 1, 2, 5],
points=['Kiran', 'Raju', 'Raja', 'Javed', 'Rishi']
)
)
# 散布図を描画
ax = df.plot.scatter(x='x', y='y', alpha=0.5)
# 各データポイントにラベルを注釈として追加
for i, txt in enumerate(df.points):
ax.annotate(txt, (df.x.iat[i]+0.05, df.y.iat[i]))
plt.show()
コードのポイント解説
このコードの重要な部分は、enumerate(df.points)によるループ処理です。データフレームのpoints列から名前を1つずつ取り出し、対応するx座標・y座標の位置にax.annotate()でテキストを配置しています。
また、(df.x.iat[i]+0.05, df.y.iat[i])のようにx座標に0.05を加算することで、ラベルがプロット点に重ならず、少し右側にずらして表示されるようになっています。このオフセット値は、グラフを見やすくするために適宜調整できます。
alpha=0.5を指定することでプロット点が半透明になり、複数の点が重なった場合でも視認性が向上します。
実行結果
上記のコードを実行すると、各点に「Kiran」「Raju」「Raja」「Javed」「Rishi」という名前のラベルが付いた散布図が出力されます。


この手法は、顧客名や商品名などカテゴリ情報を可視化に反映させたい場合に非常に便利です。応用として、ラベルのフォントサイズや色を変えたり、条件に応じて特定の点だけラベルを表示したりすることも可能です。
-
Matplotlibでカラーバー付きの3D散布図をプロットする方法
Matplotlibで3Dグラフにカラーバー付きの散布点をプロットするには、scatter()メソッドとcolorbar()メソッドを組み合わせて使用します。カラーバーを追加することで、データ値と色の対応関係を視覚的に把握でき、3次元データの解釈が格段に容易になります。手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。figure()メソッドを使用して、新しい図を作成するか既存の図をアクティブにします。add_subplot()メソッドでprojection=3dを指定し、3D軸をサブプロットとして追加します。NumPyを使ってxs・ys・zsの各データポイント
-
Pandasでプロットの外側に凡例を配置する方法
Pandasで作成したグラフの凡例を、プロット領域の外側に配置したいケースはよくあります。本記事では、matplotlibのlegend()メソッドとbbox_to_anchor引数を使って、凡例を自由な位置に配置する方法を解説します。 実装の手順 Pandasでプロットの外側に凡例を配置するには、以下の手順を実行します。 「Column 1」と「Column 2」をキーとする辞書 d を作成します。 DataFrame(d) を使ってデータフレームを作成します。 スタイルのリストを指定して、データフレームをプロットします。 legend() メソッドを使って図に凡例を配置します。bbox_