Python - 使用 pyplot 将二维数组映射到网格?

标签 python matplotlib colors grid mapping

这个问题在这里已经有了答案:





2D grid data visualization in Python

(2 个回答)


3年前关闭。




我是 pyplot 的新手,无法找到将数组映射到彩色网格的正确解决方案。例如,如果我有一个 10x10 二维数组和 10x10 网格:

[[0,0,0,0,0,1,1,1,1,0],
[0,0,0,0,0,1,0,0,1,0],
[0,0,1,0,1,0,1,1,0,0],
[0,0,1,0,0,1,1,0,1,0],
[0,0,1,0,1,0,0,1,1,0],
[1,0,0,1,0,1,0,0,1,0],
[0,1,0,0,0,1,1,1,1,1],
[0,1,0,0,0,0,1,1,1,1],
[1,0,0,0,1,1,1,0,1,0],
[1,1,1,1,0,0,0,1,1,0]]

如果 0 和 1 分别是蓝色和红色,则网格应如下所示:

colored grid (I didn't generate this image)

我怎样才能用 pyplot 做到这一点?

最佳答案

是的,您可以使用 imshow [matplotlib-doc]为了这:

data = [
    [0,0,0,0,0,1,1,1,1,0],
    [0,0,0,0,0,1,0,0,1,0],
    [0,0,1,0,1,0,1,1,0,0],
    [0,0,1,0,0,1,1,0,1,0],
    [0,0,1,0,1,0,0,1,1,0],
    [1,0,0,1,0,1,0,0,1,0],
    [0,1,0,0,0,1,1,1,1,1],
    [0,1,0,0,0,0,1,1,1,1],
    [1,0,0,0,1,1,1,0,1,0],
    [1,1,1,1,0,0,0,1,1,0]
]

import matplotlib.pyplot as plt

plt.imshow(data)
plt.show()

所以你只需将二维列表传递给 imshow() ,这将生成以下图像:

result of imshow

如文档中所述,您可以使用另一个颜色图为 0 使用其他颜色。和 1 , 例如:
plt.imshow(data, cmap=plt.cm.bwr)

将产生相同的数据,但具有蓝白红颜色图:

result of imshow blue-red

关于Python - 使用 pyplot 将二维数组映射到网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52566969/

相关文章:

python - 如何将多个位置导入 PYTHONPATH (bash)

python - 将字典与变量进行比较

python - Matplotlib donut 标签/注释位置

python - 如何将行标题添加到以下 matplotlib 代码中?

python - Python 中打印意外的换行符

python - Pyzmq 高水位线在 pub 套接字上不起作用

python - Matplotlib:颜色混合或如何预处理颜色以抵消透明度

javascript - 如何在多边形上打洞以在 Google map 上以干净的颜色显示每个多边形?

iphone - 我怎样才能使导航栏的颜色成为我想要的任何颜色?

android - 如何在 MPAndroidChart 中设置颜色?