gnuplot在绘制数据文件时删除异常值

时间:2011-12-08 14:09:21

标签: statistics plot gnuplot

我需要使用gnuplot绘制2个colums的数据文件,散点图是我需要的。我对gnuplot的理解是:

plot "first_click" using 2:1

我的数据的头部和尾部有3行如下:

1 612856
3 3840538
5 5240597
.
.
.
139845 1
141101 1
141584 1

我期待我的散点图显示对数趋势,但我的数据(大多数数据)有大量的异常值。所以我需要做两件事之一:

  1. 自动“缩放”到大部分数据的位置。
  2. 自动修剪异常值。
  3. 为每个列提供一个谓词来手动修剪数据,也许是可以在范围内同时使用两个列的谓词 - 例如,!column1 > x && ! column2 == 1
  4. 精确度不是问题。

    在这个阶段我更喜欢1和2,但是我想看看选项3是否可行,因为我是程序员而不是统计学家。

2 个答案:

答案 0 :(得分:3)

您也可以尝试

plot "first_click" using 2:1 smooth bezier with lines

这具有不显示大多数异常值的副作用。

答案 1 :(得分:1)

gnuplot应自动缩放以适合所绘制的数据(如果没有,您可以使用reset yrange, xrange再次自动缩放)。如果在绘图之前修剪异常值,那么您的第一个要求就已经满足了。

通过修改plot命令可以实现第二和第三:

plot "first_click" using ($2 != 1 ? $2 : 1/0):($1 < x ? $1 : 1/0)

仅绘制第二列不等于1且第一列小于x的值。其中x是您要开始修剪异常值的值。 1/0是一种告诉gnuplot该点无效且不会被绘制的方式。