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

gnuplot 3D绘图:调色板范围限制与颜色插值问题

Gnuplot绘图问题解决方案

问题1:不修改数据文件,限制调色板在0号和2号颜色范围内

直接通过设置颜色条范围(cbrange)来截断颜色映射区间,配合调色板定义即可实现需求:

  • 添加set cbrange [0:2]命令,这样所有大于2的c列数据会被映射到2号色(青色),小于0的会被映射到0号色(紫色)
  • 如果需要严格使用0、1、2对应的离散颜色(不自动生成中间过渡色),可额外添加set palette maxcolors 3

修改后的脚本片段:

set pm3d interpolate 3,3,3
set palette defined  ( 0 "purple", 1 "blue" , 2 "cyan" , 3 "green" ,4 "orange",5 "red",6 "brown",7 "black",8 "grey" )
set cbrange [0:2]  # 限定颜色映射范围
# set palette maxcolors 3  # 可选:启用离散颜色映射
show palette gradient
sp 'datasets' u 1:2:3:4 palette lt 7 not

问题2:实现数据点之间的颜色插值

根据数据类型,有两种可行方案:

  1. 网格状数据直接用pm3d曲面插值
    如果你的数据是规则网格格式,将splot命令中的散点绘制改为pm3d曲面绘制,会自动完成颜色和曲面插值:

    splot 'datasets' u 1:2:3:4 pm3d
    

    配合已有的set pm3d interpolate 3,3,3可以进一步提升插值细腻度。

  2. 非网格散点先插值补点再绘制
    若数据是无规则散点,先使用dgrid3d生成规则插值网格,再用pm3d绘制:

    set dgrid3d 50,50,3  # 生成50×50的插值网格,插值阶数为3
    splot 'datasets' u 1:2:3:4 pm3d
    

    dgrid3d会先对散点数据进行插值补全,再执行pm3d的颜色插值渲染。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:42:09