我一直在尝试使用sprintf在同一个gnuplot图上绘制几个文件来读取文件名。我可以在一个论点中读到o.k.如果我写:
filename(n) = sprintf("oi04_saxs_%05d_ave_div_sub.dat", n)
plot for [i=1:10] filename(i) u 1:2
然后我的图表是o.k,我将所有带有该参数的文件绘制在同一图表上。但是我有一串字符在我的文件名末尾附近发生变化,当我尝试在
中反映出来时filename(n,m) = sprintf("oi04_saxs_%05d_0001_%04s_ave_div_sub.dat",n,m)
plot for [i=1:10] filename(i,m) u 1:2
我收到以下错误消息:'未定义的变量m'。我尝试删除循环并运行
plot for filename(m)
,这会导致相同的错误消息。帮助理解出了什么问题以及如何修复它将非常感激:)
这是我的完整脚本:
unset multiplot
reset
set termoption enhanced
set encoding utf8
set term pdf size 18cm,18cm font 'Arial'
set pointsize 0.25
set output 'StoppedFlowResults.pdf'
set logscale
set xlabel '{/:Italic r} / [Q]'
set ylabel '{/:Italic Intensity}'
filename(n) = sprintf("./Result_curve-%d.txt/estimate.d", n)
myColorGradient(n) = sprintf("#%02x00%02x", 256-(n-1)*8-1, (n-1)*8)
set key off
set multiplot layout 2,1
filename(n,m) = sprintf("oi04_saxs_%05d_0001_%04s_ave_div_sub.dat",n,m);
plot for [i=1:10] filename(i,m) u 1:2 not
unset multiplot
set output
答案 0 :(得分:0)
基于dish
,您可以进行嵌套迭代,例如:
help for
在你的情况下,你可以将它与字符串混合(你还没有定义字符串可能的值),例如:
plot for [i=1:3] for [j=1:3] sin(x*i)+cos(x*j)