matplotlib의 산점도로 연속적으로 색칠하기

matplotlib의 산점도를 연속적으로 색칠하는 방법의 메모.

포인트로서는
1. cmap을 사용하여 연속 실수를 RGB 연속 값으로 변환
2. plt.scatter() 에서 제공되는 facecolors 또는 edgecolors 인수 사용
두 가지입니다.

(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)



참고 URL


  • cmap 목록 : htps // tp t b. 오 rg / 에어 mpぇ s / 코 r / 코 rma ps_ 레후 렌세. HTML
  • 좋은 웹페이지 즐겨찾기