我想要使用gnuplot绘制大量的数据文件。文件采用文本形式,采用多列形式。我想使用gnuplot绘制给定文件中的所有列,而不需要识别要绘制的列的数量,甚至是文件中的总列数,因为列的总数往往会在我正在拥有的文件。有什么方法可以使用gnuplot来做到这一点吗?
答案 0 :(得分:8)
你可以通过不同的方式解决这个问题,有些方法更不优雅。
以以下文件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列。