1

我想在 gnuplot 中绘制 3 个函数,而其中一个函数具有更高的采样率。原因是在如此高的采样率下,虚线看起来有些压缩并且彼此之间变得难以区分。高采样率的函数应该用实线绘制,另外两个用虚线绘制。这是一个工作示例:

set term postscript dashed

set out 'test1.ps'

iu = {0.,1.}
kmax = 1.e1
lami = 1.e-2
lamf = 1.e2
lmax = lamf
tau = 5.

fun(x) = (exp(-2. * iu * x * pi * kmax) * (-1. + exp(2. * iu * x * pi * (1. + kmax)))**2 * (atan(lamf / (2. * x * pi)) - atan(lami / (2. * x * pi)))) / (2. * (-1. + exp(2. * iu * x * pi))**2 * x * pi * kmax**0 * (lamf - lami))

funSimp(x) = (2. * tau)/(4. * x**2 * pi**2 + tau**2)
funSimpler(x) = atan(lmax / (2. * x * pi)) / (2. * x * pi)

set xr [1e-4:500]
set yr [1e-6:10]

set logscale x
set logscale y

set samples 10000

plot \
fun(x) / 20.        t 'f'   w l, \
funSimp(x)          t 'fs'  w l, \
funSimpler(x) / 20. t 'fss' w l

'fs' 和 'fss' 的虚线看起来与图例上显示的不同。我试着做

set samples 10000

plot \
fun(x) / 20.        t 'f'   w l

set samples 50

plot \
funSimp(x)          t 'fs'  w l ls 2, \
funSimpler(x) / 20. t 'fss' w l ls 3

但这行不通,因为只有第一个图被打印到文件中。replot也没有帮助。

gnuplot 4.6.5,赢 7 64

4

2 回答 2

1

这是 postscript 终端的问题。它在绘制表示函数的线条时使用相对坐标。由于这可能会产生舍入错误,moveto因此每 100 点发布一次。这会中断路径,在使用破折号模式时会变得可见。源代码中的补丁是单行的。

作为解决方法,我建议您使用pdfcairo没有此问题的。然后,如果您需要它作为输出格式,您可以将 pdf 转换为 eps。或者你可以使用cairolatex eps终端。

于 2014-07-28T07:17:17.943 回答
0

谢谢,只是补充一下:我实际上正在使用 gnuplottex (http://www.ctan.org/pkg/gnuplottex)。因此,根据您的评论,我像这样更改了终端:

\begin{gnuplot}[terminal=cairolatex,terminaloptions={monochrome dashed dl 3.0 lw 1.0 rounded size 9cm,7cm}]

通过这种选择和epstopdf预先包含的软件包,人们可以直接使用破折号生成 gnuplot 图形pdfLaTeX,甚至可以规避破折号的问题。

目前我唯一不能做的就是裁剪输出,就像使用dvips "xyz.dvi" -E.

于 2014-07-28T17:13:40.497 回答