【发布时间】:2014-11-05 00:55:56
【问题描述】:
我正在尝试使用 gnuplot 来比较几个数据文件。我使用ls 命令通过列表获取这些文件,然后绘制这些文件。
List = "`echo $(ls GRID/3D/Ratio_5/DATA.dat.* | sort -V )`"
这给了我一个文件列表 DATA.dat.0001 DATA.dat.0002 ... DATA.dat.0100 代表不同的时间,然后我可以使用它们来绘制它们
plot for [i in List] i u 1:2 title system('basename '.i)
在这种情况下,没有问题。但是,在某些情况下,我需要比较不同的Ratio_ 目录(这里没有时间依赖性),所以我创建了我的列表
List = "`echo $(ls GRID/3D/Ratio_*/DATA.dat | sort -V )`"
但是相同的绘图命令为我的所有系列赋予了相同的名称:DATA.dat。我试过了
plot for [i in List] i u 1:2 title system('dirname '.i)
但它会打印除DATA.dat 之外的整个路径,而我只对Ratio_ 号码感兴趣。
我创建了一个函数来从文件名字符串中提取比率
Ratio(filename) = "awk -F / '{print $3}' ".filename
plot for [i in List] i u 1:2 title Ratio(i)
但它只是为每个数据系列打印整个awk -F / '{print $3}' GRID/3D/Ratio_1/DATA.dat。我试图在Ratio(filename) 的定义中添加一个system 调用,但没有成功
Ratio(filename)=system("awk '{print $3}' " .filename)
plot for [i in List] i u 1:2 title Ratio(i)
但现在每个数据系列的名称就像对应 DATA.dat 的整个第 3 列一样,有数百行。
我没有想法。这可能只是一个简单的语法问题,一个错位的引号、点或逗号。我知道我可以在3D 目录中调用我的gnuplot 脚本并使用dirname 选项,但这不是我想要的。我将这个脚本与许多其他放置在同一目录中的脚本一起调用,为一篇科学文章创建图表,而将这些脚本放在不同的地方会很麻烦。
感谢任何帮助。谢谢
【问题讨论】: