【发布时间】:2018-02-16 02:01:25
【问题描述】:
上下文
我有几点意见
points = np.random.uniform(0,10, size = (10,2))
# array([[ 7.35906037, 6.50049804],
[ 3.21883403, 3.81452312],
[ 3.52107154, 1.68233797],
[ 1.47699577, 6.01692348],
[ 3.76051589, 0.25213394],
[ 8.93701081, 5.20377479],
[ 6.5347188 , 2.12940006],
[ 3.62550069, 5.80619507],
[ 1.33393325, 5.0088937 ],
[ 6.99034593, 7.40277623]])
并且它们被“分类”或标记。这意味着我有一个列表
labels = np.random.randint(0,3, size = 10)
# array([2, 0, 1, 2, 2, 1, 1, 0, 1, 2])
表示points 中每个点的标签(按顺序)。
我也有加分
extraPoints = np.random.uniform(0,10, size = (3,2))
# array([[ 1.91211141, 3.71208978],
# [ 8.10463536, 1.88948511],
# [ 9.79796593, 3.39432552]])
基本上,这些点中的每一个都决定了类标签。它如何确定标签并不重要。但是您只需要知道这些额外点中的每一个都与一个且只有一个标签相关联。所以有相同数量的额外点和标签可能性。
问题
我想做一个散点图。我想为extraPoints 中的每个点分配不同的颜色,因此这种颜色将与每个类对应。这基本上意味着extraPoints[0] 与0 类相关联,extraPoints[1] 与1 类相关联,extraPoints[2] 与2 类相关联。
另外,我想散点图points 中的点。请记住,points 中的每个点都与labels 中的相应标签相关联。
例如[ 7.35906037, 6.50049804] 属于2 类,因此具有与extraPoints[2] = [ 9.79796593, 3.39432552] 相同的颜色。同样,points 中的点[ 3.21883403, 3.81452312] 与labels 中的0 类相关联,因此具有与extraPoints[0] = [ 1.91211141, 3.71208978] 相同的颜色
我的尝试
我尝试在plt.scatter() 中使用c 参数,但我并不真正理解它是如何工作的,有时它有点工作,有时它说“无效的RGBA 参数0.0”但似乎是任意的..
注意,为了区分points 和extraPoints,我将extraPoints 放大并具有更高的透明度。
import matplotlib.pyplot as plt
# I scatter the points, and assign c to labels. So hopefully each
# point that ends up in the same label will have the same
# color? I think this part is fine, although I am not sure
plt.scatter(points[:,0], points[:,1], c = labels)
plt.scatter(extraPoints[:,0], extraPoints[:,1], s = 100, alpha = 0.3, c = np.arange(len(extraPoints)))
正如您可以自己尝试的那样,对于不同的执行(因为每次我们都有随机数组),我们可能要么正确(或几乎)正确,要么得到标题中的错误。为什么会这样?
勇敢者的额外奖励
鉴于这种情况,想象一下我也有一些价值观
values = np.random.uniform(0,50, size = 3)
# array([ 14.63459424, 37.41573654, 34.45202082])
我有相同数量的值,因为我有标签和额外点的类型(在这种情况下为 3)。现在每一个都与相应的 extraPoints 相关联。因此第一个值到第一个 extraPoint 等等..
我想做上面的图,但是颜色会有一个“渐变”,例如,较小的值会变亮,而较大的值会变暗(或相反)。我怎样才能做到这一点?我阅读了有关颜色图的信息,但无法将其与我的问题完全整合。
示例
如您所见,我无法控制颜色。不仅如此,我不知道哪个点在哪个类中(除非我回去手动查看每个点,但显然我不想要这个)。这就是为什么(以及其他我不会在这里介绍的原因)我想根据values 中的值对它们进行着色。具体来说,我想说有一个值范围[10, 20 30] 可以指导我的点的颜色,以便我知道哪个类是“最强的”
【问题讨论】:
标签: python matplotlib plot colors colormap