Python 使用相同的颜色方案可视化多个二维阵列

Python 使用相同的颜色方案可视化多个二维阵列,python,matplotlib,grid,visualization,Python,Matplotlib,Grid,Visualization,我目前正在尝试可视化三个具有相同颜色的二维阵列。数组为13x13,包含整数。在一个外部文件中,每个整数都有一个十六进制的颜色代码 当我现在尝试可视化阵列时,三个阵列中有两个看起来不错。所有数字与颜色代码匹配,并正确显示阵列。但在最后一张图片中,部分数据分配不正确 color\u name=[c.strip()表示c处于打开状态(颜色).readlines()] color_dict={v:k代表v,枚举中的k(color_名称)} unique_classes=(np.unique(np.as

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

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

color\u name=[c.strip()表示c处于打开状态(颜色).readlines()]
color_dict={v:k代表v,枚举中的k(color_名称)}
unique_classes=(np.unique(np.asarray(feature_map))).tolist()
数量\u类=len(唯一\u类)
color\U code=[唯一类中cla的color\U dict.get(cla)]
cmap=plt.colors.ListedColormap(颜色代码)
norm=plt.colors.BoundaryNorm(唯一类,cmap.N)
img=pyplot.imshow(特征映射[0],插值='nearest',
cmap=cmap,norm=norm)
pyplot.colorbar(img,cmap=cmap,
范数=范数,边界=唯一类)
pyplot.show()
img1=pyplot.imshow(特征映射[1],插值='nearest',
cmap=cmap,norm=norm)
pyplot.show()
img2=pyplot.imshow(特征映射[2],插值='nearest',
cmap=cmap,norm=norm)
pyplot.colorbar(img2,cmap=cmap,
范数=范数,边界=唯一类)
pyplot.show()
与图片上的数据完全相同:

[25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,5,25,5,[26,26,6,6],[26,26,26,0,0,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


我已经研究这个问题好几个小时了,现在无法重现这个问题

我试图重现你的结果,但有件事引起了我的注意

如果你仔细观察feature_map[2]的值,你可能会发现你声称未分类的像素的值实际上与周围像素的值不同。因此,它的值实际上具有正确的颜色。因此,我认为这不是因为分类错误,而是因为你的数据。如果你所指的是“部分数据”是位置(0,11)处的像素,否则我会把它全部弄错,并对这个答案感到抱歉


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

谢谢您的反馈。我指的不是数字56的一个像素,而是它周围的区域(数字28)。在前两个要素图中,数字为28的区域为紫色,而在最后一个要素图中,数字为28的区域不再为紫色。我希望我能更具体地描述这个问题。它非常奇怪,而不是绘制指定给28的颜色,它绘制的颜色为26,正好位于28之前。如果我将每个28都转换为下一个映射的颜色值是56,它们都变为28的颜色。所以在最后一张图像中,在特定的左下角,每个映射的像素值都被着色,就好像它们具有cmap顺序中的上一个像素值一样。准确地说。这怎么可能?有一个自动解决方案吗?在我看来,错误是随机的,但我无法纠正这个错误对于所有特征贴图,我只是尝试将假彩色像素的像素值增加1,结果成功了。但这真的很奇怪。我的意思是,这几乎像是某种缺陷。因为它发生在图像的局部。我发现特征贴图之间的唯一区别是唯一的像素值计数。我尝试更改数据输入,增加cmap和标准尺寸,但没有效果。也许你应该在这里发布详细解释和我们的发现。