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()
3条答案
按热度按时间bq3bfh9z1#
接受的答案是正确的,但是如果您可能想指定哪个类标签应该分配给特定的颜色或标签,您可以执行以下操作。我做了一个小标签体操与颜色栏,但使情节本身减少到一个很好的一行程序。这对于绘制使用sklearn完成的分类结果非常有用。每个标签匹配(x,y)坐标。
使用稍微修改过的this答案,可以将上述N种颜色概括如下:
其给出:
wnrlj8wa2#
假设你有一个2d数组中的数据,这应该可以工作:
您还可以设置
cmap
属性,以控制通过使用colormap显示的颜色;即,将pylab.scatter
行替换为:可以在here中找到颜色图列表
eivnm1vs3#
一个简单的解决方案是为每个类分配颜色。这样,我们就可以控制每个类的每种颜色。例如: