我一直試圖在同一個gnuplot圖上使用sprintf讀取文件名中的幾個文件。我可以讀一個參數o.k.如果我寫:在gnuplot中使用sprintf函數中的兩個參數
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
正如錯誤信息所示:在[plot = [i = 1:10] filename(i,m)']中使用它之前,您沒有在任何地方定義'm'。 – Christoph
但是當我寫filename(n,m)= sprintf(「」,n,m)時,我不定義它嗎?是不是從潛在的文件名列表中定義它? – MoreTeaPlease
不,你有一個函數定義,所以第二個函數參數可以在函數體內使用'm',但只在那裏。當你調用你的'filename'函數時,這是一個不同的問題。而且,現在我明白了,你有兩個不同的'filename'定義。 – Christoph