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

如何在Gnuplot中仅将颜色设为对数刻度(色柱数值及刻度不变)

GNUPLOT实现颜色对数映射但色柱刻度保持线性的方法

要实现颜色按对数刻度分配,但色柱(colorbar)的数值和刻度保持原始线性范围,有两种简洁的实现方式:

方法一:手动转换数据z值+自定义色柱刻度

直接对数据的颜色值做对数转换,同时固定色柱显示原始线性刻度:

set size square 1,1
set cbrange [0:2]
# 定义对数转换函数,加极小值避免0值触发对数错误
log_transform(x) = log10(x + 1e-8)
set pm3d map
# 强制色柱显示原始线性刻度
set cbtics ("0" 0, "0.1" 0.1, "0.5" 0.5, "1" 1, "1.5" 1.5, "2" 2)
# 调色板节点需转换为对数后的数值(对应原始分界点的对数)
set palette defined (-8 'gray30', -0.1249 'gray20', 0.1303 'cyan', 0.3010 'cyan')
# 绘制时对第三列(颜色值)应用对数转换
splot 'Sq.dat' using 1:2:(log_transform($3)) with pm3d

方法二:开启调色板对数刻度+关闭色柱对数显示

利用gnuplot内置的调色板对数功能,同时强制色柱保持线性刻度显示,无需手动转换数据:

set size square 1,1
set cbrange [0:2]
set pm3d map
# 让颜色映射使用对数刻度
set palette logscale
# 关闭色柱的对数刻度显示,保持线性刻度
set logscale cb off
# 设置色柱刻度为原始线性区间的节点
set cbtics 0, 0.5, 2
# 调色板节点直接用原始线性数值即可
set palette defined (0 'gray30', 0.75 'gray20', 1.35 'cyan')
splot 'Sq.dat' with pm3d

注意事项

  • 若数据包含0值,方法一中的1e-8偏移可避免对数计算报错;方法二中gnuplot会自动将0值映射到调色板最低端
  • 方法二更简洁,推荐优先使用,仅当需要更精细控制颜色映射时选择方法一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:07:32