Gnuplot 如何同时遍历两个文件列表

Gnuplot 如何同时遍历两个文件列表,gnuplot,Gnuplot,我试图从两个不同目录中的数据生成一组(多)图,称它们为dirA和dirB。我正在使用multiplot,我希望每一个都像这样(请原谅我的艺术性) 其中,图A由dirA中的数据文件生成,图B由dirB生成 我试过这个(简化了一点) 但这给了我一个机会 “:”预期 线路错误 plot filesB[i] 1:2 with lines 所以,也许我只是不知道如何正确引用带有索引的filesB数组 或者有更好的方法 我希望我能很好地解释我的问题,欢迎提出任何建议 谢谢您有文件A1、A2、和B1、B2

我试图从两个不同目录中的数据生成一组(多)图,称它们为dirA和dirB。我正在使用multiplot,我希望每一个都像这样(请原谅我的艺术性)

其中,图A由dirA中的数据文件生成,图B由dirB生成

我试过这个(简化了一点)

但这给了我一个机会

“:”预期

线路错误

plot filesB[i] 1:2 with lines
所以,也许我只是不知道如何正确引用带有索引的filesB数组

或者有更好的方法

我希望我能很好地解释我的问题,欢迎提出任何建议


谢谢

您有文件
A1、A2、
B1、B2、
m
是否总是等于
n
?输出文件应命名为什么
C1、C2、…Cn

下面的示例在windows下工作。希望您可以将其应用于Linux

代码:

### create multiplots from different filelists (Windows)
reset session
unset multiplot

myDirA = 'dirA\'
myDirB = 'dirB\'
myType = '*.dat'
filesA = system('dir /b '.myDirA.myType)  # Windows
filesB = system('dir /b '.myDirB.myType)  # Windows
# spaces in path or filenames probably will create problems and would require a workaround

set terminal pngcairo size 800,200 font ",8"
# Assumption: number of filesA and number of filesB are identical
#             and no spaces in path or filename
do for [i=1:words(filesA)] {
    set output sprintf("myPlot%03d.png",i)

    set multiplot layout 1,2
    set origin 0,0
    set size 0.25, 1.0
    plot myDirA.word(filesA,i) u 1:2 w lines

    set origin 0.25, 0
    set size 0.75, 1.0
    plot myDirB.word(filesB,i) u 1:2 w lines

    unset multiplot
    set output
}
### end of code

您有文件
A1、A2、…An
B1、B2、…Bm
m
是否总是等于
n
?输出文件应命名为什么
C1、C2、…Cn

下面的示例在windows下工作。希望您可以将其应用于Linux

代码:

### create multiplots from different filelists (Windows)
reset session
unset multiplot

myDirA = 'dirA\'
myDirB = 'dirB\'
myType = '*.dat'
filesA = system('dir /b '.myDirA.myType)  # Windows
filesB = system('dir /b '.myDirB.myType)  # Windows
# spaces in path or filenames probably will create problems and would require a workaround

set terminal pngcairo size 800,200 font ",8"
# Assumption: number of filesA and number of filesB are identical
#             and no spaces in path or filename
do for [i=1:words(filesA)] {
    set output sprintf("myPlot%03d.png",i)

    set multiplot layout 1,2
    set origin 0,0
    set size 0.25, 1.0
    plot myDirA.word(filesA,i) u 1:2 w lines

    set origin 0.25, 0
    set size 0.75, 1.0
    plot myDirB.word(filesB,i) u 1:2 w lines

    unset multiplot
    set output
}
### end of code

谢谢这很有效。我想我没有意识到系统调用返回一个可以用单词function解析的字符串。干杯,谢谢!这很有效。我想我没有意识到系统调用返回一个可以用单词function解析的字符串。干杯