2015-09-30 32 views
1

我想畫一些圖表從文件中讀取一些值,使用epslatex - gnuplot的(版本5.0 PATCHLEVEL 1),具體如下:雙面標籤和抽搐中的gnuplot(epslatex)

# gnuplot.gp 
set term epslatex 
set output "figure.tex" 
set xlabel "x" 
set ylabel "y" 

set nokey 
set size square 
set xrange [0:1.0] 
set yrange [0:1.0] 

do for[idLine = 1 : 4 : 1]{ 
    a1 = system("cat data.dat | awk 'NR == ".idLine." {print $1}'") 
    a2 = system("cat data.dat | awk 'NR == ".idLine." {print $2}'") 

    plot x**a1 + a2 with lines lt 1 lc rgb "black" 
} 

和數據

# data.dat 
1.0 0.0 
2.0 0.0 
3.0 0.0 
4.0 0.0 

即使我設法畫人物,我想,還有一個問題是,標籤不是單一的情節越來越大膽(請參閱下面的數字,我希望的圖像質量足夠以區別...)。 看來,這些現象是由於多次繪圖的雙面字母造成的。

我已經嘗試了幾種方法來避免這個問題,但是這些都沒有奏效。 有沒有什麼聰明的方法來避免這個問題?

Graph with number of plots

Graph with a single plot

回答

1

你的情況,你可以閱讀整個文件到一個變量,並與word提取參數。然後你可以遍歷與plot for ...所有的參數,它與幾個地塊僅生成一個圖表:

# gnuplot.gp 
set term epslatex 
set output "figure.tex" 
set xlabel "x" 
set ylabel "y" 

parameters = system("awk '!/^#/' data.dat") 
set xrange [0:1] 
plot for [i=1:words(parameters):2] x**word(parameters, i) + word(parameters, i+1) with lines notitle 

awk呼叫從自己的輸入文件中刪除註釋行。如果它沒有任何評論,你也可以使用parameters = system("cat data.dat")

+0

謝謝你的回答,美麗的解決方案。 – eng27