Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Matplotlibで色相カラーマップと凡例を使った3D散布図の描き方

PythonのMatplotlibで3D散布図を描く際、色相(hue)ベースのカラーマップと凡例を組み合わせると、データの分布をより直感的に把握できます。この記事では、Seabornのカラーパレットを活用しながら、色分けされた3D散布図に凡例を追加する手順を解説します。

実装の手順

  • figureサイズを設定し、サブプロット間および周囲の余白を調整します。
  • NumPyを使って xyz のデータポイントを作成します。
  • 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 を指定することで、凡例をプロット領域の外側・左上に配置し、グラフと重ならないようにしています。

出力結果

Python Matplotlibで色相カラーマップと凡例を使った3D散布図の描き方

このコードを実行すると、x値に応じて色が変化する3D散布図が表示され、右側には対応する数値範囲を示す凡例が配置されます。なお、Matplotlib 3.5以降では fig.gca(projection='3d') の代わりに fig.add_subplot(projection='3d') を使うことが推奨されています。

  1. Matplotlibの図に凡例を配置・整列させる方法

    Matplotlibで作成した図(フィギュア)に凡例を適切な位置に配置し、要素を整列させる方法を解説します。凡例の位置調整には bbox_to_anchor 引数を使用するのがポイントです。 手順 plot() メソッドを使って line1 と line2 の2本の線をプロットします。 legend() メソッドで図に凡例を配置します。このとき bbox_to_anchor を使って凡例の位置を指定し、ncol 引数で凡例要素を横並びに整列させます。 show() メソッドを呼び出して図を表示します。 コード例 from matplotlib import pyplot as plt pl

  2. PythonのMatplotlibで中空(白抜き)の四角形マーカーを描画する方法

    Matplotlibで中空(塗りつぶしなし)の四角形マーカーを描くには、マーカーの種類に ks を指定し、markerfacecolor=none、markersize=15、markeredgecolor=red を設定します。これにより、枠線だけの白抜きスタイルの四角形マーカーが描画されます。 各パラメータの意味 ks:k は黒色(black)、s は四角形(square)を表すマーカースタイルです。 markerfacecolor=none:マーカーの内部を塗りつぶさず、中空にします。 markersize(ms):マーカーのサイズを指定します(ここでは15)。 markeredgec