Matplotlib创建一个Cityscapes_Allette_Map



我想创建一个Cityscapes_Palette_Map作为"颜色映射";用于我的语义分割输出。

从0到22的每个像素值的颜色定义如链接所示。

我看到了很多创建";连续的";cmap,但我需要的是";离散的";cmap将int像素值(类(映射到特定颜色。我想知道是否有人能为我找到合适的参考资料来解决我的问题。非常感谢。

欢迎使用SO.

Matplotlib仍然没有一种简单的方法来将整数映射到颜色。通常,最简单的方法是简单地在matplotlib之外应用映射,然后将颜色值传递给matplotllib。

import numpy as np
import matplotlib.pyplot as plt
n = 10
x = np.random.rand(n)
y = np.random.rand(n)
color_as_integer = np.random.randint(3, size=n)
colormap = {
0  : np.array([  0,   0,   0, 255]),     # unlabelled
1  : np.array([ 70,  70,  70, 255]),     # building
2  : np.array([100,  40,  40, 255]),     # fence
}
# matplotlib works with rbga values in the range 0-1
colormap = {k : v / 255. for k, v in colormap.items()}
color_as_rgb = np.array([colormap[ii] for ii in color_as_integer])
plt.scatter(x, y, s=100, c=color_as_rgb)
plt.show()

然后,您可以使用代理艺术家创建一个图例,如下所示。

另一种选择是使用ListedColormap和BoundaryNorm的组合将整数映射到颜色,如本答案所示。

在这种情况下,你也可以得到这里概述的颜色条(尽管在你的情况下,制作一个合适的图例可能更好(。

最新更新