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

gnuplot绘制簇状柱形图叠加折线报no valid points错误

问题:gnuplot簇状柱状图叠加折线触发无有效点报错

故障场景

需要在同一张图中实现两类元素:

  • x轴每个分类刻度下渲染2组柱形,组成簇状柱状图,展示两组百分比数据
  • 叠加折线图,使用右侧y轴,展示两列百分比数据的比值

当前柱形部分可正常渲染,但绘制折线时触发报错:line 22: warning: Skipping data file with no valid points,折线无法正常显示。
初步怀疑报错和全局设置绘图样式为histogram有关,但无法确认,也不清楚绘制折线时是否需要单独调整绘图参数;目前仅能找到单柱叠加折线的参考案例,无簇状柱形图叠加折线的可行方案。
已提前精简代码和测试数据,排除冗余字段干扰,精简后运行仍触发相同报错。

复现用代码与数据

gnuplot脚本

set terminal png size 800,500 enhanced font "Times,12"
set output 'test.png'

red = "#FF0000"; green = "#00FF00"; blue = "#0000FF"; skyblue = "#87CEEB";
set key right top
set yrange [0:0.2]
set ylabel "Percentage"
set y2range [0:1.0]
set y2label "Ratio" 
set style data histogram
set style histogram cluster gap 1
set style fill solid
set boxwidth 0.9
set xtics format ""
set ytics 
set y2tics
set grid ytics

set title "Some title"
plot "mydata.dat" using ($2/100.0):xtic(1) title "Group 1" linecolor rgb green, \
            '' using ($3/100.0) title "Group 2" linecolor rgb blue , \
     '' using 1:($2/$3) with lines axis x1y2

测试数据文件mydata.dat

#   File of data
A   12.3    17.6
B   11.7    16.2
C   11.1    15.9
D    8.3    12.1
E    9.2    10.5

报错信息

"myfile.gnuplot", line 22: warning: Skipping data file with no valid points

故障原因

报错和histogram样式的坐标规则直接相关:

  • 当使用set style histogram cluster模式时,gnuplot不会使用数据列中的值作为x坐标,而是自动为每个分类簇分配从0开始的整数x坐标(第一个分类对应x=0,第二个对应x=1,以此类推)
  • 原代码中折线部分写的using 1:($2/$3),取的是数据第1列的分类字符串(A/B/C/D/E)作为x值,字符串无法作为数值型坐标输入,因此gnuplot读不到任何有效数据点,直接跳过。

修复方案

将折线部分的x坐标改为gnuplot内置的行号计数column(0)(简写为0即可),该值是跳过注释行后从0开始的行序号,和histogram自动分配的簇x坐标完全对齐,修改后最后一行plot指令如下:

'' using 0:($2/$3) with linespoints axis x1y2 title "Ratio" linecolor rgb red lw 2

如果不需要折线上的数据点标记,把linespoints改回lines即可。修改后折线会正好对齐每个柱形簇的中心位置,双y轴显示正常,不会再触发无有效点报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:48:14