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



我使用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。我在这个实现中有什么错误?

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

关于标签,你的左边距太小,所以标签在图像之外。例如,我不得不使用

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

对于图1,1,以便具有合理的裕度并查看所有标签(yty标签和ylabel)。Analytics还好。

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

而且你不需要手动设置分析。使用

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,tic标签的长度等
    • 绘图区域可以相对于set sizeset origin自动确定的区域进行更改(对于splot,可以使用set view缩放)
  • 也可以通过指定显式边距来固定打印区域。在这种情况下,用户必须关心提供足够大的裕度以适应所有元素。可以使用set lmarginset rmarginset bmarginset tmargin独立指定边距。它们的值可以通过两种方式指定:
    1. set tmargin 1会留下相当于一个字符高度的上边距
    2. set tmargin at screen 0.95保留画布总大小的5%的上边距

最新更新