社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python-使用pyplot将2d数组映射到网格?[副本]

Jai Bheeman • 4 年前 • 1367 次点击  

这个问题已经有了答案:

我对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呢?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39650
 
1367 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Willem Van Onsem
Reply   •   1 楼
Willem Van Onsem    5 年前

是的,你可以用 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

Sandeep Kadapa
Reply   •   2 楼
Sandeep Kadapa    5 年前

您需要的适当功能是 pcolor :

from matplotlib import pyplot as plt
from matplotlib import colors
cmap = colors.ListedColormap(['Blue','red'])
plt.figure(figsize=(6,6))
plt.pcolor(data[::-1],cmap=cmap,edgecolors='k', linewidths=3)
plt.show()

enter image description here

或:

cmap = colors.ListedColormap(['Blue','red'])
plt.figure(figsize=(6,6))
plt.pcolor(data[::-1],cmap=cmap,edgecolors='k', linewidths=3)
plt.xticks(np.arange(0.5,10.5,step=1))
plt.yticks(np.arange(0.5,10.5,step=1))
plt.show()

enter image description here