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

如何使用gnuplot的every关键字按数据块采样生成分组柱状图

every关键字参数释义

你看到的官方语法按顺序对应6个可配置参数,含义如下:
every <点步长>:<块步长>:<起始点索引>:<起始块索引>:<结束点索引>:<结束块索引>
先对齐两个基础概念:

  • 数据块:两个空行分隔的一段有效数据为1个独立块,块索引从0开始计数
  • 数据点:每个块内排除注释行后的每一行数据为1个数据点,点索引从0开始计数

你的样例数据刚好符合4个块的要求:块0是x从0到0.8的第一组、块1是x从1到1.8的第二组、块2是x从3到3.8的第三组、块3是x从4到4.8的第四组,每个块各有5个有效数据点。


对应场景的使用示例

场景1:读取全部4个块绘制柱状集群

这是你需要的核心用法,命令如下:

# 预先设置柱状图样式
set style data histogram
set style fill solid border -1
set style histogram cluster gap 1

# 用every读取所有块绘制4组集群柱
plot '你的数据文件.dat' every 1::0::0::4::3 using 2:xtic(1) title "第一组", \
     '' every 1::1::0::4::3 using 2 title "第二组", \
     '' every 1::2::0::4::3 using 2 title "第三组", \
     '' every 1::3::0::4::3 using 2 title "第四组"

上述every 1::0::0::4::3参数拆解:

  • 第一个参数1:点步长为1,读取每个块的全部数据点
  • 第二个参数空缺(默认值1):块步长为1,按顺序读取所有符合要求的块
  • 第三个参数0:从每个块的第0个数据点开始读取
  • 第四个参数0:从第0个块开始读取
  • 第五个参数4:读取到每个块的第4个数据点结束(刚好覆盖5个点)
  • 第六个参数3:读取到第3个块结束

场景2:单独读取单个块调试

如果只需要绘制第二组(块索引为1)的数据,命令如下:

plot '你的数据文件.dat' every 1:1:0:1:4:1 using 1:2 with boxes title "第二组数据"

这里指定了起始块和结束块都为1,就只会读取第二组的内容。

场景3:按间隔抽取数据点

如果不需要每个块的全部5个点,只需要第1、3、5个点(索引0、2、4),将点步长设为2即可:

plot '你的数据文件.dat' every 2::0::0::4::3 using 2:xtic(1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:51:02