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

如何根据JSON数值区间为6*6网格配色并生成可视化图像

实现方案

最简便的可复现方案是基于Python完成数据读取、网格转换、颜色映射、图像导出全流程,不需要依赖设计工具或前端代码。

依赖安装

先安装需要的第三方库,执行命令:
pip install numpy matplotlib

核心实现流程

  • 读取存储数据的JSON文件,提取fsr字段对应的数值列表,先校验列表长度为36,避免网格转换出错
  • 将长度为36的一维数值列表按行优先规则(前6个值为第一行,依次顺延)转换为6*6的二维矩阵
  • 自定义数值区间与对应显示颜色的映射规则,参考配置如下:

可根据实际需求调整区间边界与对应色值:

  • 数值 < 140:浅蓝色 #e3f2fd
  • 140 ≤ 数值 < 150:淡绿色 #c8e6c9
  • 150 ≤ 数值 < 160:橙黄色 #fff59d
  • 数值 ≥ 160:浅红色 #ffccbc
  • 逐单元格匹配对应颜色绘制正方形网格,可按需在单元格内标注原始数值方便核对
  • 隐藏多余坐标轴、调整画布边距后导出为本地图像文件

参考实现代码

import json
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap, BoundaryNorm

# 读取本地JSON文件,替换为你的实际文件路径
with open("data.json", "r", encoding="utf-8") as f:
    raw_data = json.load(f)
fsr_list = raw_data["fsr"]

# 转换为6*6二维网格
grid_data = np.array(fsr_list).reshape(6, 6)

# 配置区间与颜色映射
interval_bounds = [130, 140, 150, 160, 170]  # 区间分割点
match_colors = ["#e3f2fd", "#c8e6c9", "#fff59d", "#ffccbc"]  # 各区间对应色值
color_map = ListedColormap(match_colors)
norm_rule = BoundaryNorm(interval_bounds, color_map.N)

# 绘制网格
fig, ax = plt.subplots(figsize=(6, 6), dpi=150)
grid_layer = ax.imshow(grid_data, cmap=color_map, norm=norm_rule)

# 可选:在每个单元格中标注原始数值
for row in range(6):
    for col in range(6):
        ax.text(col, row, grid_data[row, col], ha="center", va="center", color="#212121", fontsize=9)

# 隐藏坐标轴与多余边框
ax.set_xticks([])
ax.set_yticks([])
plt.gca().set_frame_on(False)

# 导出为图片文件
plt.savefig("fsr_color_grid.png", bbox_inches="tight", pad_inches=0.1)
plt.close()

常用调整项

  • 若需要按列优先排布数值,将reshape参数修改为reshape(6, 6, order="F")即可
  • 可自由修改区间分割点、色值、导出分辨率、单元格字号等参数适配需求
  • 若需要添加颜色图例说明各区间含义,在导出前添加代码plt.colorbar(grid_layer, fraction=0.046, pad=0.04)即可
  • 支持导出为png、jpg、svg等常见图像格式,修改savefig的文件名后缀即可切换格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:06:25