Python matplotlib - 根据值为网格图添加边框

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (1118)

我想知道你是否可以帮助我。我有一个0和1的网格,如果它是1,我想为绘图单元格区域添加边框颜色。我使用imshow生成根据值着色的网格,例如:

a = np.random.randint(2, size=(10,10))

im = plt.imshow(a, cmap='Blues', interpolation='none', vmin=0, vmax=1, aspect='equal')

但是,我无法在imshow中找到为每个网格单元格更改的任何边框属性。我读过add_patch可以用来在某些点上放置一个矩形,用来模拟轴上的边界值,但有没有比循环和应用单元更好的方法?

谢谢你提供的所有帮助。

提问于
用户回答回答于

没有内置功能可以对imshow边缘进行部分着色。最简单的选择可能确实是为每个单元格绘制一个矩形。

import matplotlib.pyplot as plt
import numpy as np

a = np.random.randint(2, size=(10,10))

im = plt.imshow(a, cmap='Blues', interpolation='none', vmin=0, vmax=1, aspect='equal')

def rect(pos):
    r = plt.Rectangle(pos-0.5, 1,1, facecolor="none", edgecolor="k", linewidth=2)
    plt.gca().add_patch(r)

x,y = np.meshgrid(np.arange(a.shape[1]),np.arange(a.shape[1]))
m = np.c_[x[a.astype(bool)],y[a.astype(bool)]]
for pos in m:
    rect(pos)

plt.show()

所属标签

可能回答问题的人

  • 嗨喽你好

    7 粉丝480 提问9 回答
  • uncle_light

    5 粉丝518 提问7 回答
  • 人生的旅途

    10 粉丝484 提问7 回答
  • 富有想象力的人

    3 粉丝0 提问7 回答

扫码关注云+社区

领取腾讯云代金券