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
结果:
我想使用 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
结果: