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

如何将Matplotlib对数色条的10幂刻度改为0.1~10的普通数值

解决方法

你之前写的ax.ticklabel_format作用对象是地图的经纬度坐标轴,并不会修改色条的刻度格式,所以不生效。
针对你要的0.1到10区间、7个左右普通数值刻度的需求,我们可以直接指定对数刻度位置为[0.1, 0.2, 0.5, 1, 2, 5, 10],刚好7个符合要求,同时把色条的格式化器设置为关闭科学计数法的普通数值格式即可。

具体修改步骤

  • 删掉你原来标注为DOES NOT WORK的那行ax.ticklabel_format(style='plain',useMathText=None),该配置对色条无效
  • 修改chl.plot里的cbar_kwargs参数,补充刻度和格式化配置,可直接复用你已经导入的ScalarFormatter

修改后的核心代码段

# 先定义7个目标刻度
cbar_ticks = [0.1, 0.2, 0.5, 1, 2, 5, 10]
# 定义格式化器,关闭科学计数法
formatter = ScalarFormatter(useMathText=False)
formatter.set_scientific(False)

# 绘图代码
chl.plot(ax=ax, transform=ccrs.PlateCarree(),
         vmin=0.1, vmax=10, extend='both', 
         cbar_kwargs={'shrink': 0.2, 'pad':0.01, 'ticks': cbar_ticks, 'format': formatter},
         cmap="jet", norm=LogNorm(vmax=10))

如果想要统一保留1位小数显示,也可以直接用FormatStrFormatter('%.1f')替换上面的ScalarFormatter,出来的刻度就是0.1、0.2、0.5、1.0、2.0、5.0、10.0的效果。如果运行代码提示plt或者ccrs未定义,在导入部分补两行即可:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:24:03