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

Matplotlib使用十六进制字符串色值报TypeError该如何处理

十六进制颜色数组Matplotlib绘图解决方案

错误原因

pcolormesh 接口默认要求输入数值型网格数据,内部通过色映射规则转换为颜色,无法直接识别字符串格式的十六进制色值,因此抛出类型错误。

解决方案

方案1:用imshow直接渲染(推荐,适配像素级绘图场景)

imshow 原生支持RGBA格式的栅格数据,只需要先把十六进制色值转换为RGBA数值数组即可使用,代码更简洁,像素对齐精度更高:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import to_rgba

# 你的原始颜色数组
z = np.asanyarray(pixel_arr)
# 逐元素转换为RGBA四元组,最终得到形状为(100,100,4)的浮点数组
rgba_arr = np.array([[to_rgba(color) for color in row] for row in z])

fig, ax = plt.subplots()
# origin参数控制y轴方向:upper对应数组第一行在图像顶部,lower对应第一行在底部
# extent参数对应x、y轴的坐标范围,和你原有x、y的0-100范围对齐
ax.imshow(rgba_arr, origin='upper', extent=[0, 100, 0, 100])
plt.show()

方案2:自定义色表适配pcolormesh

如果必须使用pcolormesh接口,可以生成索引数组搭配自定义色表实现:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap

z = np.asanyarray(pixel_arr)
# pcolormesh的坐标参数是网格边界,长度需要比像素数量多1
x = np.arange(0, 101, 1)
y = np.arange(0, 101, 1)

# 生成和颜色一一对应的索引数组
idx_arr = np.arange(z.size).reshape(z.shape)
# 用你的十六进制颜色数组生成自定义色表
custom_cmap = ListedColormap(z.flatten())

fig, ax = plt.subplots()
ax.pcolormesh(x, y, idx_arr, cmap=custom_cmap)
plt.show()

注意事项

  • 如果需要关闭坐标轴的边框、刻度,可调用ax.axis('off')实现纯像素图展示
  • 两种方案都不需要额外做数值归一化、色映射调整,完全保留你原始颜色数组的定义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 23:54:06