【发布时间】:2019-10-01 19:09:39
【问题描述】:
我有许多自定义二维点对象,每个对象都有:
- 坐标 x 和 y
- 标签 1°(-1 和 +inf 之间的整数):这将以标记的颜色表示(cmap 的索引)
- label 2°([1 3] 范围内的整数):我希望这个在标记类型中表示
问题是许多点将共享一个标签 1° 值,但标签 2° 一可能不同,反之亦然。
我尝试提取关于标签 2° 值的点并分别绘制它们,这样:
pointsSubset1 = getPointsWithLabel2Value1()
pointsSubset2 = getPointsWithLabel2Value2()
pointsSubset3 = getPointsWithLabel2Value3()
# just assume x y and labels values are obtained correctly
plt.scatter(x1, y1, c=listOfLabels1ForSubset1, cmap="nipy_spectral", marker='s') # plotting pointsSubset1
plt.scatter(x2, y2, c=listOfLabels1ForSubset2, cmap="nipy_spectral", marker='.') # plotting pointsSubset2
plt.scatter(x3, y3, c=listOfLabels1ForSubset3, cmap="nipy_spectral", marker='<') # plotting pointsSubset3
我认为这会起作用,但事实并非如此。标记设置正确,但颜色设置不正确...
忽略 x 和 y 坐标的示例:
-
子集1 =
- 点 1:
- 标签1:-1
- 标签2:1
- 点 1:
-
子集2 =
- 点2:
- 标签1:1
- 标签2:2
- 点2:
在这种情况下,来自子集 1 的点 1 将与来自子集 2 的点 2 具有不同的标记,但两者将共享相同的颜色(黑色),因为当两者分别绘制时,尽管它们具有不同的 label1 值,但两者都将映射到光谱中的第一种颜色 ....
我希望 cmap 中的颜色索引在点子集之间匹配,并且我不认为传递自定义颜色数组是解决方案 bc 标签 1 的可能值在 [-1, +inf] 的范围内(而且我不知道如何管理 cmap 规范化)。
提前致谢。
【问题讨论】:
标签: python python-3.x matplotlib plot scatter