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

基于Matplotlib的关联X值与颜色值的一维颜色序列绘图问题

更新内容

有另一种方法能更准确显示颜色值,但仍存在X值与标注的问题。

cmap_ = ListedColormap(rgb_values)

fig = plt.figure(figsize=(10,4))
ax = fig.add_axes([0.05, 0.1, 0.9, 0.85])

mpl.colorbar.ColorbarBase(ax, cmap=cmap_, orientation='horizontal')
plt.show()

更新后的图1

背景

我正在生成自定义颜色序列(十六进制值列表),每个颜色对应一个数值(存储在单独列表中)。尝试沿由数值列表定义的X轴绘制一维网格,并用颜色序列中的颜色填充网格单元,但在Matplotlib中难以生成满意的绘图。目前可绘制颜色序列,但无法用数值列表定义X轴。

示例代码

以下是可运行的简化版本:

import matplotlib.pyplot as plt
from matplotlib.colors import hex2color, ListedColormap

num_values = [-10000000, -5000000, -2500000, -1000000, -500000, -250000, -100000, -50000, -10000, 0, 10000, 50000, 100000, 250000, 500000, 1000000, 2500000, 5000000, 10000000]
hex_values = ['#345f79', '#367aa3', '#368cbf', '#3690c0', '#74a9cf', '#a6bddb', '#d0d1e6', '#ece7f2', '#fff7fb', '#f0f0f0', '#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fda362', '#fc7154', '#d04c67', '#bd0026', '#a64c67']
rgb_values = [hex2color(hex) for hex in hex_values]

plt.imshow((num_values,),  cmap=ListedColormap(rgb_values))
plt.show()

上述代码可生成图1。

图1

图1

技术问询

当前绘图存在以下问题,寻求解决方案:

  • 中心区域的颜色(本应为灰色系)未显示出设定的精确值,是否因插值导致饱和度降低?
  • 尝试设置xticks时会报错,如何配置绘图以使用num_values列表作为X轴刻度值?
  • 最终希望为每个单元格添加对应十六进制值的标注,若有相关实现建议也请提供。
参考资料

已查阅以下资料但未找到合适解决方案:

  • imshow官方文档
  • colormaps官方文档(用imshow绘制色卡,但不知如何适配场景)
  • Colormap Reference官方文档
  • Color Maps文档
  • Creating Colormaps using Matplotlib相关内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:40:13