基于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()

背景
我正在生成自定义颜色序列(十六进制值列表),每个颜色对应一个数值(存储在单独列表中)。尝试沿由数值列表定义的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

技术问询
当前绘图存在以下问题,寻求解决方案:
- 中心区域的颜色(本应为灰色系)未显示出设定的精确值,是否因插值导致饱和度降低?
- 尝试设置xticks时会报错,如何配置绘图以使用num_values列表作为X轴刻度值?
- 最终希望为每个单元格添加对应十六进制值的标注,若有相关实现建议也请提供。
参考资料
已查阅以下资料但未找到合适解决方案:
- imshow官方文档
- colormaps官方文档(用imshow绘制色卡,但不知如何适配场景)
- Colormap Reference官方文档
- Color Maps文档
- Creating Colormaps using Matplotlib相关内容
内容的提问来源于stack exchange,提问作者XonAether
相关产品推荐
相关产品推荐

