Gnuplot 右数第二列或最后一列

Gnuplot second from right or last coulmn

我想使用 Gnuplot 从最右边的列开始绘制第二个、第三个和第四个。在 awk 中,我们可以使用 ($NF-1)。但是在 Gnuplot 中,我不确定如何从最右边的列中指定一个列 'using'.

是否可以在 Gnuplot 中使用 awk 绘制右列第 3 列和右列第 4 列?或者这是我们必须使用 shell 脚本的东西吗?

我有很多长文本文件要绘制,所以我无法创建新的文本文件来使用 awk 重写文件,然后使用 Gnuplot。那太费时间了。我希望使用 Gnuplot 从右数第 2、3 和 4 处绘制图。

您可以使用 STATS_columns 作为列数并在您的绘图中使用它

例如

nf = int(STATS_columns)
plot data.dat using 1:nf-4

不需要awk。如果您执行 stats,则可以使用 every ::0::0 将其限制为一行。它应该很快。尝试以下完整示例:

代码:

### plotting columns from right
reset session

$Data <<EOD
11  21  31  41  51  61  71
12  22  32  42  52  62  72
13  23  33  43  53  63  73
14  24  34  44  54  64  74
15  25  35  45  55  65  75
16  26  36  46  56  66  76
17  27  37  47  57  67  77

EOD

stats $Data u 0 every ::0::0 nooutput
ColMax = STATS_columns

ColFromRight(col) = column(ColMax-col+1)

plot $Data u (ColFromRight(3)):(ColFromRight(4)) w lp pt 7
### end of code

结果: