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

Gnuplot字符串字段条件绘图问题:仅绘制name为Q4的x、y数据

在gnuplot中按字符串条件筛选数据绘制

你的代码出错有几个核心原因:

  1. 用了字符串字面量"name"和"y"而非引用数据列,gnuplot会把这些字符串当成数值解析,触发报错;
  2. 错误使用==作为字符串比较符,gnuplot中字符串相等判断需用eq;
  3. 命令末尾多了一个冗余括号。

正确实现方法

先明确数据列对应关系:你的数据文件第1列是name字符串列,第2列是x、第3列是y。如果数据文件第一行是表头,需要用skip 1跳过表头行。

简洁写法

plot "data.log" skip 1 u ($1 eq "Q4" ? $2 : NaN) : ($1 eq "Q4" ? $3 : NaN) with points
  • $1指代第1列字符串,eq用于判断字符串相等;
  • 条件满足时取对应数值列($2为x轴数据,$3为y轴数据),否则返回NaN,gnuplot会自动跳过这些无效数据行;
  • with points指定绘制点样式,可根据需求替换为lines等其他样式。

直观显式写法

如果觉得$n不够清晰,可用strcol()和column()函数明确指定列类型:

plot "data.log" skip 1 u (strcol(1) eq "Q4" ? column(2) : NaN) : (strcol(1) eq "Q4" ? column(3) : NaN) with points
  • strcol(1)获取第1列的字符串值;
  • column(2)获取第2列的数值。

补充说明

如果数据文件没有表头行,直接去掉skip 1即可:

plot "data.log" u ($1 eq "Q4" ? $2 : NaN) : ($1 eq "Q4" ? $3 : NaN) with points

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:05:05