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

matplotlib中如何为pcolormesh图创建离散对数colorbar(色标)

实现方法

你可以通过自定义对数间隔边界+BoundaryNorm数值映射的方式实现离散对数色标,修改后的代码如下:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors

# 自定义对数间隔的色阶边界,可根据需求调整分段数量、边界数值
# 示例为0.01到100按10的幂次划分,共4个离散色段
log_bounds = np.logspace(-2, 2, 5)
# 加载colormap,颜色数量和色段数量匹配
cmap = plt.get_cmap('viridis', len(log_bounds) - 1)

# 替换原有LogNorm为BoundaryNorm实现离散映射
plt.pcolormesh(X, Y, Z, norm=mcolors.BoundaryNorm(log_bounds, cmap.N), cmap=cmap)

# 给色标设置对应对数刻度
cb = plt.colorbar(ticks=log_bounds)
# 可按需修改色标标签为实际物理量名称
cb.set_label('数值')

# 原有其余代码保持不变
fig = plt.gcf()
fig.set_size_inches(4*2.5, 3*2.5)
plt.xlabel("X", horizontalalignment='right', x=1.0)
plt.ylabel("Y", horizontalalignment='right', y=1.0)
plt.tight_layout()
plt.show()

调整说明

  • 若需要更细的离散粒度,修改np.logspace的第三个参数即可,例如设置为9就会生成8个离散色段
  • 也支持手动指定非均匀对数边界,直接写成列表形式即可,例如log_bounds = [0.01, 0.05, 0.2, 1, 15, 100]
  • 若需要显示区间标签而非边界值,自行修改cb.set_ticklabels配置即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:54:02