You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将二维数组子区域按(i,j)坐标绘制Colorplot并去除零值区域?

解决方案

要让H[i][j](i,j∈1-3)对应显示在坐标(i,j),同时满足坐标轴范围1-4、去除零值区域的需求,你可以通过调整imshow的坐标映射参数来实现,以下是修正后的代码和说明:

修正代码

import numpy as np
import matplotlib.pyplot as plt

H = [[0,0,0,0],[0,1,2,3],[0,3,4,3],[0,5,2,3]]
# 提取i=1-3、j=1-3的子区域,简化写法
V = np.array(H[1:4])[:, 1:4]

# 核心设置:origin='lower'将图像原点放在左下角,extent定义坐标覆盖范围
# extent参数格式:[x最小边界, x最大边界, y最小边界, y最大边界]
# 这里设置为[0.5, 3.5, 0.5, 3.5],让每个数组元素的单元格中心对应(1,1)、(1,2)...(3,3)
plt.imshow(V, origin='lower', extent=[0.5, 3.5, 0.5, 3.5], cmap='viridis')

# 设置坐标轴刻度与H的i、j值一一对应
plt.xticks([1, 2, 3])
plt.yticks([1, 2, 3])

# 将坐标轴范围限制为1-4,符合需求
plt.xlim(1, 4)
plt.ylim(1, 4)

# 添加垂直颜色条
plt.colorbar(orientation='vertical')

plt.show()

关键修改说明

  1. 子区域提取优化:用np.array(H[1:4])[:, 1:4]替代原列表推导式,更简洁高效,结果一致。
  2. 坐标映射调整:
    • origin='lower':把图像的原点从默认的左上角改为左下角,符合常规坐标系的y轴向上递增逻辑。
    • extent=[0.5, 3.5, 0.5, 3.5]:定义每个单元格的边界,让数组的第(0,0)个元素(对应H[1][1])的单元格中心正好落在坐标(1,1),以此类推,实现H[i][j]与坐标(i,j)的对应。
  3. 坐标轴配置:
    • xticks/yticks设置为[1,2,3],直接对应H的i、j索引值。
    • xlim/ylim将坐标轴范围锁定为1-4,满足显示要求。
  4. 零值区域去除:由于已经提取了H中i、j≥1的子区域,V数组中不存在零值,自然不会出现零值的深色显示。

内容的提问来源于stack exchange,提问作者Dayumona

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 19:10:05