使用gnuplot绘制文件中的所有列,而不指定列数

Ajo*_*joy 4 data-visualization gnuplot

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

Mig*_*uel 8

有不同的方法可以解决这个问题,一些更多,一些不那么优雅.

以以下文件data为例:

1 2 3
2 4 5
3 1 3
4 5 2
5 9 5
6 4 2
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

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

plot for [i=1:10] "data" u 0:i w l title "Column ".i
Run Code Online (Sandbox Code Playgroud)

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

  • 最新版本的Gnuplot具有`stats`命令,因此如果你运行`stats'数据'nooutput`,`STATS_columns`变量将包含列数,在这种情况下为3. (4认同)