Python Matplotlibで色相カラーマップと凡例を使った3D散布図の描き方
PythonのMatplotlibで3D散布図を描く際、色相(hue)ベースのカラーマップと凡例を組み合わせると、データの分布をより直感的に把握できます。この記事では、Seabornのカラーパレットを活用しながら、色分けされた3D散布図に凡例を追加する手順を解説します。
実装の手順
- figureサイズを設定し、サブプロット間および周囲の余白を調整します。
- NumPyを使って x、y、z のデータポイントを作成します。
- figure() メソッドで新しい図を作成するか、既存の図をアクティブにします。
- gca() メソッドで現在の軸を取得します(必要に応じて3D投影を指定して新規作成)。
- Seabornのパレットから色相カラーマップを定義します。
- scatter() メソッドで x、y、z のデータポイントをプロットし、
c引数で値に応じた色分けを行います。 - legend_elements() を利用して凡例をプロット上に配置します。
- show() メソッドで図を表示します。
コード例
import numpy as np
import seaborn as sns
from matplotlib import pyplot as plt
from matplotlib.colors import ListedColormap
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100)
fig = plt.figure()
ax = fig.gca(projection='3d')
cmap = ListedColormap(sns.color_palette("husl", 256).as_hex())
sc = ax.scatter(x, y, z, s=40, c=x, marker='o', cmap=cmap, alpha=1)
plt.legend(*sc.legend_elements(), bbox_to_anchor=(1.05, 1), loc=2)
plt.show()コードのポイント解説
1. カラーマップの作成
sns.color_palette("husl", 256) は、Seabornの「husl」パレットから256段階の色を生成します。これを ListedColormap に渡すことで、連続的な値を滑らかな色のグラデーションとして表現できるカラーマップが完成します。
2. 散布図の色分け
scatter() の c=x 引数により、x座標の値に基づいて各点が色分けされます。s=40 はマーカーのサイズ、alpha=1 は不透明度の設定です。
3. 凡例の配置
sc.legend_elements() は、カラーマップの値域に対応した凡例要素を自動生成します。bbox_to_anchor=(1.05, 1) と loc=2 を指定することで、凡例をプロット領域の外側・左上に配置し、グラフと重ならないようにしています。
出力結果

このコードを実行すると、x値に応じて色が変化する3D散布図が表示され、右側には対応する数値範囲を示す凡例が配置されます。なお、Matplotlib 3.5以降では fig.gca(projection='3d') の代わりに fig.add_subplot(projection='3d') を使うことが推奨されています。
-
Matplotlibの図に凡例を配置・整列させる方法
Matplotlibで作成した図(フィギュア)に凡例を適切な位置に配置し、要素を整列させる方法を解説します。凡例の位置調整には bbox_to_anchor 引数を使用するのがポイントです。 手順 plot() メソッドを使って line1 と line2 の2本の線をプロットします。 legend() メソッドで図に凡例を配置します。このとき bbox_to_anchor を使って凡例の位置を指定し、ncol 引数で凡例要素を横並びに整列させます。 show() メソッドを呼び出して図を表示します。 コード例 from matplotlib import pyplot as plt pl
-
PythonのMatplotlibで中空(白抜き)の四角形マーカーを描画する方法
Matplotlibで中空(塗りつぶしなし)の四角形マーカーを描くには、マーカーの種類に ks を指定し、markerfacecolor=none、markersize=15、markeredgecolor=red を設定します。これにより、枠線だけの白抜きスタイルの四角形マーカーが描画されます。 各パラメータの意味 ks:k は黒色(black)、s は四角形(square)を表すマーカースタイルです。 markerfacecolor=none:マーカーの内部を塗りつぶさず、中空にします。 markersize(ms):マーカーのサイズを指定します(ここでは15)。 markeredgec