使用相同的配色方案可视化多个二维数组

问题描述 投票:1回答:1

我目前正在尝试以相同的颜色可视化三个2D阵列。数组为13x13,包含整数。在外部文件中,每个整数都有一个十六进制颜色代码。

当我现在尝试可视化阵列时,三个阵列中的两个看起来不错。所有数字均与颜色代码匹配,并正确显示阵列。但是在最后一张图片中,部分数据未正确分配。

“这是我的问题的图片”

color_names = [c.strip() for c in open(colors).readlines()]
color_dict =  {v: k for v, k in enumerate(color_names)}

unique_classes = (np.unique(np.asarray(feature_map))).tolist()
number_classes = len(unique_classes)

color_code = [color_dict.get(cla) for cla in unique_classes]


cmap = plt.colors.ListedColormap(color_code)
norm = plt.colors.BoundaryNorm(unique_classes, cmap.N)

img = pyplot.imshow(feature_map[0],interpolation='nearest',
cmap = cmap,norm=norm)

pyplot.colorbar(img,cmap=cmap,
norm=norm,boundaries=unique_classes)
pyplot.show()

img1 = pyplot.imshow(feature_map[1],interpolation='nearest',
cmap = cmap,norm=norm)
pyplot.show()

img2 = pyplot.imshow(feature_map[2],interpolation='nearest',
cmap = cmap,norm=norm)

pyplot.colorbar(img2,cmap=cmap,
norm=norm,boundaries=unique_classes)

pyplot.show()

与图片上的数据完全相同:

feature_map = [[[25,25,25,25,56,56,2,2,2,2,2,2,25],[25,25,25,25,25,25,59,7,72,72,72,72,2],[25,25,25,25,25,25,59,72,72,72,72,72,2],[25,25,25,24,24,24,62,0,0,0,0,25,25],[25,25,24,24,24,24,24,24,24,24,25,25,25],[26,26,24,24,24,24,24,26,26,26,6,6,6],[26,26,26,24,24,26,26,26,26,26,26,6,6],[26,26,26,0,0,26,26,26,26,26,26,6,6],[28,28,28,28,28,28,28,26,26,26,26,6,6],[28,28,28,28,28,28,28,26,26,26,13,13,6],[28,28,28,28,28,28,28,26,13,13,13,13,13],[28,28,28,28,28,28,28,13,13,13,13,13,13],[28,28,28,28,28,28,28,13,13,13,13,13,13]],[[25,25,25,25,59,56,59,2,0,0,0,0,0],[25,25,25,25,25,59,59,7,72,72,72,72,72],[25,25,25,25,25,25,59,72,72,72,72,72,72],[25,25,25,0,0,25,25,6,0,0,0,72,0],[25,25,0,0,0,0,6,0,0,0,0,25,6],[26,26,26,0,0,0,24,26,0,0,6,6,6],[26,26,26,0,0,0,26,26,26,26,26,6,6],[0,26,0,0,0,0,26,26,0,26,26,6,6],[0,28,28,28,28,28,28,26,0,26,26,6,6],[28,28,28,28,28,28,28,26,0,26,0,0,0],[28,28,28,28,28,28,28,26,13,13,13,13,0],[56,56,28,28,28,28,28,13,13,13,13,13,13]],[[0,28,28,28,28,28,28,13,13,13,13,13,0],[25,25,25,25,59,59,59,4,0,0,0,0,0],[25,25,25,25,59,59,59,7,7,7,72,72,6],[25,25,25,25,25,25,59,7,7,73,73,25,0],[25,25,25,0,0,25,6,7,0,6,6,6,0],[25,0,0,0,6,6,6,6,0,0,6,6,6],[0,0,0,0,0,6,6,6,0,0,6,6,6],[0,0,0,0,0,0,6,6,0,0,6,6,6],[0,0,0,0,0,0,6,0,0,0,6,6,6],[0,0,28,0,28,28,13,0,0,0,6,6,6],[28,28,28,28,28,28,13,13,13,0,13,6,6],[28,28,28,28,28,28,28,13,13,13,13,13,13],[56,28,28,28,28,28,28,13,13,13,13,13,13],[28,28,28,28,28,28,28,13,13,13,13,13,13]]]


颜色代码文件只是其中每行包含一个十六进制代码的文件,例如:#deb887

我已经在这个问题上工作了好几个小时,目前无法重现该问题

python matplotlib grid visualization
1个回答
0
投票

我试图重现您的结果,并且引起了我的注意。

results reproduced

[如果您仔细查看feature_map [2]的值,您可能会发现声称未分类的像素实际上与其周围的像素具有不同的值。因此,实际上它的颜色具有正确的颜色。所以我认为这不是因为分类错误,而是因为您的数据。如果您所说的“部分数据”是位置(0,11)处的像素,那将是我的答案。

注意:关于颜色,我只是选择了一些随机颜色。如果它们不匹配,请不要担心。

© www.soinside.com 2019 - 2024. All rights reserved.