基于matplotlib的离散数据区域网格单元边缘

2024-05-07 17:35:00 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我有一个二维整数数组来定义网格上的区域。我想在不同地区之间的边界上画边。你知道吗

我尝试了contour(在代码中被注释掉),但得到了两个不希望的结果:

  1. 如果区域ID之间存在较大差异,它会绘制多条线
  2. 轮廓线不在单元边界上。你知道吗
from matplotlib import pyplot as plt
import numpy as np

nproc = 5
data = np.array([
    [0, 0, 0, 1, 1, 1],
    [0, 0, 1, 1, 2, 2],
    [2, 3, 3, 2, 2, 2],
    [2, 4, 1, 2, 2, 2],
    [4, 4, 4, 0, 0, 2],
    [3, 3, 4, 1, 1, 1],
])

cmap = plt.cm.get_cmap('jet', nproc)
heatmap = plt.pcolor(data, vmin=0, vmax=nproc-1, cmap=cmap)

plt.autoscale(tight=True)
colorbar = plt.colorbar(heatmap)

colorbar.ax.get_yaxis().set_ticks([])
"""
contour = plt.contour(data, range(0, nproc),
                      colors='k', linestyles='solid')
"""

for j, lab in enumerate(['$%d$' % i for i in range(0, nproc)]):
    colorbar.ax.text(1.2, (2 * j + 1) / float(nproc*2),
                     lab, ha='left', va='center')

plt.savefig('output.pdf')

Tags: import区域datagetasnprangeplt