【问题标题】:gnuplot missing data with expression evaluation带有表达式评估的 gnuplot 缺失数据
【发布时间】:2011-11-27 20:10:53
【问题描述】:

我想在 gnuplot 中使用 plot 命令进行表达式评估,即

plot "-" using ($1):($2) with lines
1 10
2 20
3 ?
4 40
5 50
e

但我希望它忽略丢失的数据“?”以这样的方式连接线(并且不会在 2 和 4 之间断开它)。
我试过set datafile missing "?", 但与在线帮助一致,它不会连接线路。以下会,但我不能使用表达式评估:

plot "-" using 1:2 with lines
1 10
2 20
3 ?
4 40
5 50
e

关于如何连接线使用表达式评估的任何想法?

【问题讨论】:

  • 你能再描述一下你想要什么吗?您是在谈论使用数学表达式减号,还是从标准输入(特殊文件名“-”)读取?一些更真实的样本数据会有所帮助。
  • 特殊文件“-”仅用于在线帮助示例。它可以是用于二维绘图的任何 gnuplot 格式的数据文件。只需将两列放在一个名为“data.dat”的文件中,然后使用 ($1):($2) 和线条将命令转换为绘图“data.dat”,或使用 1:2 和线条转换为“data.dat”。表达式评估意味着我想要例如使用带有线条的 ($1):($2/$1) 绘制“data.dat”,这仅在存在括号时才有意义。

标签: gnuplot


【解决方案1】:

两列数据

如果你设置了一个数据文件Data.csv

1 10
2 20
3 ?
4 40
5 50

您可以使用连接线绘制数据

plot '<grep -v "?" Data.csv' u ($1):($2) w lp

多于两列数据

对于两个以上的列,您可以使用 awk
使用数据文件 Data.csv

1 10 1
2 20 2
3 ?  3
4 40 ?
5 50 5

您可以像这样在每个绘图的数据文件上运行脚本:

plot "<awk '{if($2 != \"?\") print}' Data.csv" u ($1):($2) w lp, \
     "<awk '{if($3 != \"?\") print}' Data.csv" u ($1):($3) w lp

可以在here 找到有关 gnuplot 脚本的参考。 awk 用户手册here.

【讨论】:

  • 是的,但是如果我有一个三列数据文件,其中第三列在第三行中有我想要使用的正确数据,这不起作用(以所需的方式)。诚然,上面给出的两列示例太简单了。但如果我只有两列,当然有很多方法可以删除未知数据。
猜你喜欢
  • 2021-09-30
  • 2010-12-05
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 2018-02-13
相关资源
最近更新 更多