Gnuplot设置linestyle时lt <colorspec>与lc <colorspec>的区别
Gnuplot 5+ 中
lt rgb 和 lc rgb 定义线条样式的差异 在Gnuplot 5及以上版本中,这两种写法最终运行效果完全一致,差异仅存在于语义和写法规范层面,具体规则如下:
- 原生语义区别
lt是linetype的标准缩写,当后面跟随数字参数(比如lt 2)时,会一次性继承对应编号内置linetype的全部属性:包括默认颜色、点标记类型、线条虚实pattern、默认线宽等。lc是linecolor的标准缩写,原生作用就是仅修改线条颜色,不会改动同个自定义style下的其他属性(比如点型、虚线样式)。
- 为什么
lt rgb "green"能实现和lc一样的效果
这是Gnuplot做的向后兼容容错解析逻辑:如果lt后面接的不是数字格式的linetype编号,而是符合colorspec规范的颜色值(比如rgb "green"、十六进制色值、调色板颜色索引等),解析器会自动识别这是颜色指定操作,不会触发整套linetype的属性覆盖,效果和显式写lc完全一致。 - 使用建议
虽然两种写法运行结果无差别,还是推荐优先用lc显式指定颜色:- 代码语义更清晰,读配置时能直接判断这行代码的作用是修改颜色,而非切换整套linetype
- 规避未来版本参数解析规则调整带来的兼容风险
可以通过如下示例验证效果:
set colors classic set style line 1 lt 2 # 初始继承linetype2的属性:绿色、旋转十字点、对应虚线样式 # 下面两行任意执行一行,效果完全相同 set style line 1 lt rgb "red" # set style line 1 lc rgb "red"
执行后自定义style 1的点类型、线条虚实样式都会保持原来linetype2的设定,仅颜色被修改为红色。
内容的提问来源于stack exchange,提问作者Tom Solid
相关产品推荐
相关产品推荐

