gnuplot(epslatex)中的双工标签和抽搐

时间:2015-09-30 00:49:26

标签: latex gnuplot

我正在尝试使用epslatex-gnuplot(版本5.0 patchlevel 1)从文件中读取一些值来绘制一些图形,如下所示:

# 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 个答案:

答案 0 :(得分: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")