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.
相关产品推荐
相关产品推荐

