LoginSignup
4
5

More than 3 years have passed since last update.

matplotlibの散布図で連続的に色付けをする

Last updated at Posted at 2020-01-23

matplotlibの散布図を連続的に色付けする方法のメモ.

ポイントとしては
1. cmapを用いて連続する実数をRGBの連続値に変換する
2. plt.scatter()で提供されているfacecolorsedgecolorsの引数を使う
の2つです.

(20/01/24 10:34追記)
コメントでもっと簡単な方法を教えていただき,下のコード例を修正しました.
@kochory さん、ありがとうございます!

コードの例

回帰問題用のデータセットBoston housingの低次元埋め込みと目的変数(今回の例では物件価格)を散布図で可視化しました.

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
from sklearn.manifold import TSNE

X, y = load_boston(return_X_y=True)
tsne = TSNE(n_components=2, random_state=0)
embX = tsne.fit_transform(X)

# 20/01/24 10:34 頂いたコメントをもとに修正
plt.scatter(embX[:, 0], embX[:, 1], c=y, cmap='coolwarm')

# 以下は追記前のコードです
# ポイント1: yをRGBAの配列に変換する
#cm = plt.get_cmap('coolwarm')   # matplotlibのcolormapを取得
#normalized_y = (y -y.min()) / (y.max() - y.min())   # 目的変数yを0~1に正規化
#color_levels = (normalized_y * 256).astype(int)     # yをさらに0~255に変換
#colors = [cm(cl) for cl in color_levels]            # cm(cl)はRGBAのtupleを返す 
# ポイント2: facecolorsの引数を指定する
#plt.scatter(embX[:, 0], embX[:, 1], s=10, facecolors=colors)

image.png

参考URL

4
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5