gnuplot epslatex终端有问题的dvi或ps输出

时间:2014-01-08 19:25:45

标签: gnuplot

我使用epslatex终端用gnuplot 4.6.4生成eps数字。

但是,我遇到了这个脚本的问题

# reset
reset
#
sz = 1.4
rx = 10.0/7.0
#
set style line 1 lt 1 pointsize 1
# blue line
set style line 2 lt 12 pointsize 1
#
set terminal epslatex size rx*sz,2*sz color standalone
set output 'output.tex'

set multiplot layout 2,2

# Figure 1,1
set tmargin 0
set bmargin 0
set lmargin at screen 0.05
set rmargin at screen 0.475
set format x ""
set xrange [30:130]
set ylabel offset 2,0 "Y label [sec]"
unset xlabel
set grid
set yrange [0:9]
set ytics ("" 0, "1" 1, "2" 2, "3" 3, "4" 4, \
"5" 5, "6" 6, "7" 7, "8" 8, "" 9)
unset key
plot "./inp" u 1:2 t "tsL" w lp ls 1, \
"" u 1:3 t "vL" w lp ls 2
#

# Figure 1,2
set bmargin 0
set tmargin 0
set lmargin at screen 0.525
set rmargin at screen 0.95
set format x ""
set format y ""
set xrange [30:130]
set yrange [0:9]
#set mytics 2
unset ylabel
unset xlabel
set grid
plot "./inp" u 1:2 t "tsL" w lp ls 1, \
"" u 1:3 t "vL" w lp ls 2

# Figure 2,1
set tmargin 0
set bmargin 0
set lmargin at screen 0.05
set rmargin at screen 0.475
set format x "%g"
set format y "%g"
set xrange [30:130]
set ylabel offset 2,0 "Ylabel"
set xlabel offset 0,0.6 "neig"
set grid
set yrange [0:9]
set ytics ("" 0, "1" 1, "2" 2, "3" 3, "4" 4, \
"5" 5, "6" 6, "7" 7, "8" 8, "" 9)
unset key
set xtics ("40" 40, "" 60 , "80" 80,\
"" 100, "120" 120)   
set mxtics 2
plot "./inp" u 1:2 t "tsL" w lp ls 1, \
"" u 1:3 t "vL" w lp ls 2
#

# Figure 2,2
set bmargin 0
set tmargin 0
set lmargin at screen 0.525
set rmargin at screen 0.95
set format y ""
set format x "%g"
set xrange [30:130]
set yrange [0:9]
#set ylabel "Ylabel"
unset ylabel
set xlabel offset 0,0.6 "neig"
set grid
set xtics ("40" 40, "" 60 , "80" 80,\
"" 100, "120" 120)  
set mxtics 2
plot "./inp" u 1:2 t "tsL" w lp ls 1, \
"" u 1:3 t "vL" w lp ls 2
#
unset multiplot
#
set output

输入文件inp包含

40 1 3 
60 2 4
80 3 5
100 4 6
120 5 7

如果我编译文档,一切都很顺利。但是,dvi文件中缺少一行,标签似乎位于错误的位置。之后,如果我执行“dvips output.dvi”,我得到一个完全错误的ps输出,没有任何标签和ytics在错误的位置。这个实现的错误是什么?

1 个答案:

答案 0 :(得分:3)

dvi输出通常是错误的,尤其是标签,因为这些是使用Postscript操作排版的,许多dvi查看器无法正确解释这些操作。

关于标签,左边距太小,因此标签位于图像之外。对于你的例子我必须使用

set lmargin at screen 0.2
set ylabel offset 0.5,0 "Y label [sec]"

对于图1,1,为了获得合理的边距并查看所有标签(ytic标签和ylabel)。 y ys还可以。

以同样的方式,你必须修复其他子图的lmarginrmargin的其他设置,以及底行的bmargin以查看xlabel和xtic标签。

您无需手动设置ytics。使用

set ytics 1,1,8 # tics from 1 to 8 in steps of 1
set xtics 40    # distance of 40 between tics.

边距和绘图区

关于边距,绘图区域和画布大小的一些评论。

  • 图片大小(即画布大小)由size终端选项(例如set terminal pngcairo size 800,400)给出。
  • 通常,画布内绘图区域的大小和位置是根据以下几点自动确定的:
    • 字体大小
    • xlabelylabel等的存在和位置,titlekey在外,colorbox,抽签标签的长度等等。
    • 可以通过set sizeset origin相对于自动确定的绘图区域进行更改(对于splot,可以使用set view进行缩放。
  • 也可以通过指定显式边距来固定绘图区域。在这种情况下,用户必须关心提供足够大的边距以适应所有元素。可以使用set lmarginset rmarginset bmarginset tmargin单独指定边距。它们的值可以通过两种方式指定:
    1. set tmargin 1留下相当于一个字符高度的上边距。
    2. set tmargin at screen 0.95留下了总画布尺寸的5%的上边距。