使用 gnuplot 在不指定列数的情况下绘制文件中的所有列

Plot all columns in a file using gnuplot without specifying number of columns

我有大量数据文件想使用 gnuplot 绘制。这些文件是文本形式,以多列的形式。我想使用 gnuplot 来绘制给定文件中的所有列,而无需确定要绘制的列数,甚至不需要确定文件中的列总数,因为列总数往往会有所不同我拥有的文件。有什么方法可以使用 gnuplot 做到这一点吗?

您可以通过不同的方式来解决这个问题,有些比较优雅,有些不太优雅。

以下面的文件data为例:

1 2 3
2 4 5
3 1 3
4 5 2
5 9 5
6 4 2

这有 3 列,但您想编写一个不假设任何特定数字的通用脚本。我将采用的方法是使用 awk 通过 system() 调用获取 gnuplot 脚本中文件中的列数:

N = system("awk 'NR==1{print NF}' data")
plot for [i=1:N] "data" u 0:i w l title "Column ".i

假设您不想使用 system() 调用并且知道列数将始终低于某个最大值,例如 10:

plot for [i=1:10] "data" u 0:i w l title "Column ".i

然后 gnuplot 将抱怨不存在的数据,但仍会绘制第 1 到第 3 列。

现在您可以使用“*”符号了:

plot for [i=1:*] 'data' using 0:i with lines title 'Column '.i