繁体   English   中英

如何阻止 matplotlib.pyplot 在 Python 3.8.6 中更改我的 cmap ListedColormap 的顺序?

[英]How do I stop matplotlib.pyplot from changing the order of my cmap ListedColormap in Python 3.8.6?

我正在实现用于在二维网格上进行寻路的 A* 算法。 该算法运行良好,但是当使用 matplotlib.pyplot.imshow() 时,表示网格上每个正方形的 colors 有时会发生变化。 我的代码与此一致:

dataout = [
[1,2,2,2,0],
[2,1,4,3,0],
[2,1,3,2,0],
[0,2,1,1,1],
]

pyplot.figure(figsize=(len(dataout[0]), len(dataout)))
            
colormap = colors.ListedColormap(["lightblue","yellow","blue","black", "lightgreen"])
pyplot.imshow(dataout, cmap=colormap)
pyplot.show()

在此示例中,数据输出矩阵对应于以下图例:

  1. 输出路径中的节点
  2. 邻居节点
  3. 障碍
  4. 访问节点

当所有访问的节点都是输出路径的一部分时,就会出现问题(dataout[] 中不会出现 4)。 这会更改 colors 在显示图像时分配的值。

即使 dataout [] 中可能不存在某些颜色值,如何强制 colors 保持一致?

看起来 imshow 在整个数据输出值范围内使用全色 map,因此不同的 colors 取决于数据输出中是否存在 4。 我是这样解决的(将 colors 列表缩放到数据输出值的范围:

colormap = colors.ListedColormap(["lightblue","yellow","blue","black", "lightgreen"][0:np.max(dataout)+1])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM