[matplotlib] 97. 散布図に離散的カラーバーを表示する方法

matplotlib

はじめに

この記事では、matplotlib の plt.scatter 関数を使って散布図を作成し、データポイントに色分けを適用して、それを説明する離散的なカラーバーを表示する方法を解説します。

コード

解説

モジュールのインポートなど

バージョン

データの生成

sklearnの

datasets.make_moons関数を使用して、三日月状の分布を持つクラスタリングおよび分類用のデータを生成します。この関数の詳細は下記記事で解説しています。生成されたデータでは、Xに座標値が、yにラベル値が格納されます。

[scikit-learn] 4. 三日月状データを生成:make_moons関数の使い方
scikit-learnのmake_moons関数を使った三日月状データの生成方法を解説。パラメータ設定によるデータ分布の変化について詳しく説明します。

図示すると以下のようになります。

KMeansによるクラスタリング

クラスター数を10に設定し、k平均法によるクラスタリングを実行します。y_10_は各データポイントのクラスタリング結果(ラベル)を表します。

離散的カラーバーのための準備

レベルを設定します。値がレベルの範囲内に収まるように全体から-0.0001を引いています。BoundaryNormを使用してレベルに基づき、カラーマップのインデックスを生成します。

離散的カラーバーつき散布図の表示

ax.scatter() 関数では norm=norm を設定します。

各クラスターの中心点は ax.scatter(fit_10.cluster_centers_[:,0], fit_10.cluster_centers_[:,1]) で表示できます。

カラーバーは plt.colorbar(p, ticks=np.arange(10)+.5) で作成し、目盛りの値が各カラーの中央に配置されるよう +0.5 を加えています。これらの目盛りの値は cbar.ax.set_yticklabels() で設定できます。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

matplotlib.pyplot.colorbar — Matplotlib 3.3.4 documentation
KMeans
Gallery examples: Bisecting K-Means and Regular K-Means Performance Comparison Demonstration of k-means assumptions A de...

コメント