본문 바로가기
파이썬

파이썬 Matplotlib color according to class labels

by º기록 2021. 2. 5.
반응형

값이있는 벡터와 1,2,3 등의 클래스 레이블이있는 벡터가 두 개 있습니다.

클래스 1에 속하는 모든 포인트를 빨간색으로, 클래스 2에 파란색으로, 클래스 3에 녹색으로 플로팅하고 싶습니다. 어떻게해야합니까?

 

해결 방법

 

받아 들여진 대답은 눈에 띄지 만 특정 색상이나 레이블에 할당되어야하는 클래스 레이블을 지정하려는 경우 다음을 수행 할 수 있습니다. 컬러 바로 약간의 라벨 체조를했지만 플롯 자체를 만드는 것은 멋진 한 줄로 줄어 듭니다. 이것은 sklearn으로 수행 한 분류 결과를 플로팅하는 데 유용합니다. 각 레이블은 (x, y) 좌표와 일치합니다.

import matplotlib
import matplotlib.pyplot as plt
import numpy as np

x = [4,8,12,16,1,4,9,16]
y = [1,4,9,16,4,8,12,3]
label = [0,1,2,3,0,1,2,3]
colors = ['red','green','blue','purple']

fig = plt.figure(figsize=(8,8))
plt.scatter(x, y, c=label, cmap=matplotlib.colors.ListedColormap(colors))

cb = plt.colorbar()
loc = np.arange(0,max(label),max(label)/float(len(colors)))
cb.set_ticks(loc)
cb.set_ticklabels(colors)



import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

N = 23 # Number of labels

# setup the plot
fig, ax = plt.subplots(1,1, figsize=(6,6))
# define the data
x = np.random.rand(1000)
y = np.random.rand(1000)
tag = np.random.randint(0,N,1000) # Tag each point with a corresponding label    

# define the colormap
cmap = plt.cm.jet
# extract all colors from the .jet map
cmaplist = [cmap(i) for i in range(cmap.N)]
# create the new map
cmap = cmap.from_list('Custom cmap', cmaplist, cmap.N)

# define the bins and normalize
bounds = np.linspace(0,N,N+1)
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)

# make the scatter
scat = ax.scatter(x,y,c=tag,s=np.random.randint(100,500,N),cmap=cmap,     norm=norm)
# create the colorbar
cb = plt.colorbar(scat, spacing='proportional',ticks=bounds)
cb.set_label('Custom cbar')
ax.set_title('Discrete color mappings')
plt.show()

다음을 제공합니다.


 

참조 페이지 https://stackoverflow.com/questions/12487060

 

 

반응형

댓글