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

如何为色标每个整数值分配独立颜色并使刻度居中?

解决离散整数数据的颜色区分与色标对齐问题

针对你的0-5整数数据集,原代码的问题在于levels=np.linspace(0,5,6)是把数值作为分界点,而非每个整数单独对应一个颜色区间。以下是修改后的代码,实现每个数值专属颜色且色标刻度居中:

import matplotlib.pyplot as plt
import numpy as np

fig, axes = plt.subplots(nrows=1, ncols=1, figsize=[10,8])

# 定义每个整数对应的区间边界,确保每个整数单独成块
levels = np.arange(-0.5, 6, 1)
# 从viridis色图中提取6种离散颜色,也可以自定义颜色列表如['#440154','#482878',...]
cmap = plt.get_cmap('viridis', 6)

# 绘图时指定levels、cmap,设置色标刻度与格式
im = agree_all_land.topo.plot(cmap=cmap, levels=levels, extend='neither', cbar_kwargs={
    'ticks': np.arange(0,6),
    'spacing': 'proportional',
    'orientation': 'vertical'
})

axes.set_xlabel('longitude (degrees east)')
axes.set_ylabel('latitude (degrees north)')
# 可选:确保刻度完全居中对应颜色块
im.colorbar.set_ticklabels(np.arange(0,6))
plt.tight_layout()
plt.show()

关键改动说明

  • levels设置:用np.arange(-0.5,6,1)生成[-0.5,0.5,1.5,...,5.5]的边界,这样每个整数n会被分到[n-0.5, n+0.5]区间,确保每个数值对应独立颜色块。
  • 离散色图:用plt.get_cmap('viridis',6)从viridis中提取6种均匀间隔的颜色,也可以替换为自定义颜色列表(比如cmap=['red','green','blue','yellow','purple','orange'])。
  • 色标配置:通过cbar_kwargs指定刻度为0-5,spacing='proportional'保证每个颜色块宽度一致,刻度自动居中对应颜色块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:33:14