如何在gnuplot中绘制指定颜色的3D矢量场?
修复Gnuplot 3D矢量场颜色显示问题
问题根源
- 矢量全灰色:直接用列号7作为颜色变量时,Gnuplot会默认将其当作数值解析,但你的第7列是十六进制字符串格式的颜色码,无法被正确识别为颜色值,最终 fallback 为灰色。
- 显示颜色条:使用
lc rgb var时,Gnuplot默认会启用颜色条(colorbox)来匹配数值型颜色变量,这与你用固定颜色码的需求冲突。
修复后的代码
scale = 1 unset colorbox # 关闭侧边颜色条 set style arrow 1 head filled size 0.05,15 # 可选:优化箭头显示样式 splot 'file.dat' u 1:2:3:($4*scale):($5*scale):($6*scale):(stringcolumn(7)) w vectors arrowstyle 1 lc rgb
核心修改点
- 正确读取颜色字符串:用
stringcolumn(7)替代直接引用列7,明确告诉Gnuplot这是字符串类型的十六进制颜色码(如"#FF0000")。 - 调整颜色指定逻辑:移除
var参数,直接用lc rgb搭配字符串变量,让Gnuplot直接解析字符串为对应颜色。 - 关闭颜色条:添加
unset colorbox命令,彻底移除不需要的侧边颜色条。
额外适配说明
如果你的十六进制颜色码没有#前缀,需要在代码中补全格式,将(stringcolumn(7))修改为("#".stringcolumn(7)),确保Gnuplot能正确识别颜色。
内容的提问来源于stack exchange,提问作者CW279
相关产品推荐
相关产品推荐

