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

Gnuplot使用palette frac为arrow设置线条颜色失效问题

问题原因及解决方案

1 首要语法错误

你代码中lc和palette frac被拆分到两行,且没有添加反斜杠\作为续行符,Gnuplot会将其识别为两条独立命令:

  • 第一条set arrow命令的lc参数未传入有效值,直接使用默认配色
  • 第二条palette frac 0.5是非法独立指令,不会生效

2 版本兼容问题

Gnuplot 5.2对静态箭头(set arrow定义的对象)的palette配色支持存在限制,即使语法正确也可能出现不生效的情况。


可运行修正方案

方案1:修正语法+适配静态箭头规则

将lc palette frac放在同一行,同时确保绘图时palette处于激活状态,修正后的代码如下:

set terminal pdfcairo fontscale 1.0 size 19in,9in
set sample 1000

set output "plot_files/mapping_test.pdf"

set palette defined (0 '#0000cc' , 1 '#c00000') model RGB
set colorbox # 确保调色板显示,激活palette配色逻辑

row_num = 10

do for [i=1:row_num]{
    x_val = (i-1.0)/(row_num-1)
    frac_val = (i-1.0)/(row_num-1)
    # 整行书写不拆分,不需要续行符
    set arrow i from first x_val, graph 0 to first x_val, graph 1 nohead lw 5 lc palette frac frac_val
}

plot sin(x)

方案2:用向量绘图替代静态箭头(兼容性最强)

避免使用静态arrow对象,直接在plot阶段用with vectors绘制竖线,天然支持palette配色,不会出现版本兼容问题:

set terminal pdfcairo fontscale 1.0 size 19in,9in
set sample 1000

set output "plot_files/mapping_test.pdf"

set palette defined (0 '#0000cc' , 1 '#c00000') model RGB
set xrange [-10:10] # 明确x范围适配sin(x)绘图

row_num = 10

# 用plotted data生成竖线,frac值作为配色参数
plot sin(x) lw 2, \
     '+' using ( ( $0 / (row_num -1) ) * (GPVAL_X_MAX - GPVAL_X_MIN) + GPVAL_X_MIN ):(0):(0):(GPVAL_Y_MAX - GPVAL_Y_MIN):( $0/(row_num-1) ) with vectors nohead lw 5 lc palette notitle

内容的提问来源于stack exchange,提问作者Simon T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:54:03