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

如何让Gnuplot为每个柱状图使用预定义颜色并解决传参报错

Gnuplot按数据行设置柱状图颜色的问题解决

你定义了颜色映射函数myLinecolor(i),但调用时传入variable导致报错internal error : non-INTGR argument,核心问题是参数类型不匹配,且word()函数的索引是1-based(从1开始),而gnuplot的行号列$0是0-based(从0开始)。

修正方案

把颜色函数的参数改成行号加1,确保传入整数索引。以下是修正后的完整代码:

LINECOLORS = 'red green blue yellow brown gray turquoise'
myLinecolor(i) = word(LINECOLORS,i)
set output 'results.svg'

# using xval:ydata:box_width:color_index:xtic_labels
#       0:5:(0.8):0:xtic(1)
# xval        0- 每行的行号(0开始)
# ydata       5 - 第5列的数值
# box_width   0.8 - 柱子宽度
# color_index 0 - 与行号一致的颜色索引
# xtic_labels xtic(1) - 用第1列作为x轴标签

plot 'results.csv' every ::1 using 0:5:(0.8):0:xtic(1) with boxes lc rgb myLinecolor(int($0)+1)

关键修改说明

  • int($0)+1:将0-based的行号转为1-based索引,匹配word()函数的索引规则,这样第1行($0=0)对应word(LINECOLORS,1)即红色,第2行对应绿色,以此类推。
  • 也可以用int($4)+1替代int($0)+1,因为你在using里指定的第四列是颜色索引0,和行号完全一致,效果相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 16:51:12