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

gnuplot调用文件第三列自定义RGB颜色失败求助

Gnuplot 自定义RGB颜色绘制柱状图问题解决

我尝试用gnuplot读取数据文件第三列的十六进制RGB值设置柱状图颜色,数据文件内容如下:

John     10479 228c44
Tom      5780  4fffa7
Willia   5248  773095
Salem    4747  ea1c1s
john     4630  db2f0d

使用绘图命令:

plot "data.txt" using 2:xtic(1):(1):3 with boxes lc rgb variable title "Messages sent"

原本预期using字段作用:

  • 2:决定柱形高度
  • xtic(1):将第一列名称作为X轴刻度标签
  • (1):设置柱形宽度
  • 3:读取第三列的RGB颜色

但执行后报错skipping data file with no valid points,无图形显示;若仅使用using 2:xtic(1):(1),gnuplot会错误将(1)作为X轴刻度标签,忽略xtic(1)。要求直接使用文件中的十六进制RGB颜色,不借助linestyles。

错误原因分析

  1. 数据非法字符:Salem行的颜色值ea1c1s包含十六进制不允许的s字符(合法范围为0-9、a-f/A-F),导致gnuplot无法解析该数据点,直接跳过整个文件。
  2. using字段顺序错误:with boxes的using语法中,xtic()是刻度标签修饰符,不能放在数值字段序列里,正确的字段顺序应为x坐标:y高度:宽度:颜色,刻度标签需单独指定。

解决方案

  1. 修正数据文件:将Salem行的ea1c1s改为合法十六进制值,例如ea1c1f。
  2. 使用正确的绘图命令:
plot "data.txt" using 0:2:(1):3:xtic(1) with boxes lc rgb variable title "Messages sent"

命令各部分说明:

  • 0:使用gnuplot自动生成的X轴索引(从0开始),确保柱形按顺序排列
  • 2:柱形高度(Y轴数值)
  • (1):柱形宽度,可根据需求调整为0.8等数值避免重叠
  • 3:读取第三列的十六进制RGB颜色值
  • xtic(1):指定X轴刻度标签为第一列的名称

执行修正后的命令后,gnuplot会正常解析数据,绘制出带自定义RGB颜色的柱状图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:10:59