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

如何用Matplotlib imshow从列表字典绘制3×3热力图?

解决方案:将列表字典转换为Matplotlib imshow可用格式

方法1:纯Python核心功能(无需NumPy)

Matplotlib的imshow可直接接受二维嵌套列表作为输入,借助Python 3.7+字典的有序特性,直接提取字典值即可完成转换:

import matplotlib.pyplot as plt

dictA = {"A": [1,2,3], "B": [4,5,6], "C": [7,8,9]}
# 提取字典值组成二维列表,顺序与字典键插入顺序一致
SOMETHING = list(dictA.values())

plt.imshow(SOMETHING)
# 设置y轴刻度标签为字典的键,实现A、B、C垂直排列
plt.yticks(ticks=[0, 1, 2], labels=list(dictA.keys()))
# 可选:反转y轴,让A在底部、C在顶部(更符合常规阅读习惯)
plt.gca().invert_yaxis()
plt.show()

方法2:使用NumPy(更适合后续数据操作)

如果需要更灵活的数组处理,或兼容Python 3.6及以下无有序字典的版本,可通过NumPy转换为数组:

import matplotlib.pyplot as plt
import numpy as np

dictA = {"A": [1,2,3], "B": [4,5,6], "C": [7,8,9]}
# 转换为NumPy二维数组
SOMETHING = np.array(list(dictA.values()))

plt.imshow(SOMETHING)
plt.yticks(ticks=[0, 1, 2], labels=list(dictA.keys()))
plt.gca().invert_yaxis()
plt.show()

关键说明

  • 默认imshow的y轴从上到下递增,因此list(dictA.values())的第一个元素(A)会显示在图的顶部,添加invert_yaxis()可反转y轴,让A位于底部。
  • Python 3.7+的字典会保留键的插入顺序,无需额外排序即可保证A、B、C的垂直顺序;若使用旧版本Python,需手动指定键的顺序,比如[dictA["A"], dictA["B"], dictA["C"]]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 10:27:04