我想在gnuplot中绘制3个函数,而其中一个函数具有更高的采样率。原因在于,在高采样率的情况下,虚线看起来有点压缩并且彼此之间变得不那么可区分。 具有高采样率的功能应该用实线绘制,另外2用虚线绘制。这是一个有效的例子:
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,Win 7 64
答案 0 :(得分:1)
这是postscript终端的问题。它绘制表示函数的线时使用相对坐标。由于这可能会产生舍入误差,因此每100个点发出moveto
。这会中断路径,使用短划线模式时会显示该路径。来源中的补丁是单行的。
作为解决方法,我建议你使用没有这个问题的pdfcairo
。然后,如果您需要将其作为输出格式,则可以将pdf转换为eps。或者您可以使用cairolatex eps
终端。
答案 1 :(得分: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
包,可以直接使用pdfLaTeX
生成gnuplot数字,甚至可以用破折号来避免问题。
我目前唯一能做的就是裁剪输出,就像可以用dvips "xyz.dvi" -E
一样。