我想做一些与此问题相似的事情:gnuplot : plotting data from multiple input files in a single graph。
我想同时绘制所有目录中的文件,而不必明确地写出他们的名字。所有文件的列号都相同。我该怎么办?
执行plot for [file in *] file u 3:2
无效。
另外,我不希望每个文件都有不同的图例。所有文件中的所有点都应该被视为相同,就像它们都来自单个文件一样。
答案 0 :(得分:7)
作为Jonatan答案的替代方案,我会选择
FILES = system("ls -1 *.dat")
plot for [data in FILES] data u 1:2 w p pt 1 lt rgb 'black' notitle
或
plot '<(cat *.dat)' u 3:2 title 'your data'
如果要标记每条曲线,第一个选项可为您提供更大的灵活性。例如,如果您有多个名称为data_1.dat
,data_2.dat
等的文件,这些文件将标记为1
,2
等,则:
FILES = system("ls -1 data_*.dat")
LABEL = system("ls -1 data_*.dat | sed -e 's/data_//' -e 's/.dat//'")
plot for [i=1:words(FILES)] word(FILES,i) u 3:2 title word(LABEL,i) noenhanced
答案 1 :(得分:2)
我希望能够选择要用通配符绘制的文件,所以如果你喜欢,你可以按照以下方式进行,尽管有很多方法。创建以下脚本。
script.sh:
example.com/public/products -> example.com/products
example.com/public/products/123 -> example.com/products/123
做gnuplot -p << eof
set term wxt size 1200,900 title 'plots'
set logs
set xlabel 'energy'
plot for [ file in "$@" ] file w l
eof
像chmod u+x script.sh
如果你需要它经常为它做一个别名并把它放在一个合理的地方:) 干杯/ J
答案 2 :(得分:0)
尝试以下命令:
gnuplot -e 'plot for [file in system("find . -depth 1 -type f -print")] file u 3:2'
注意:添加-p
以保留绘图窗口。