gnuplot добавить графики с разными настройками

Я хотел бы представить 3 функции в gnuplot, в то время как одна из них имеет более высокую частоту дискретизации. Причина в том, что при такой высокой частоте дискретизации пунктирные линии выглядят несколько сжатыми и становятся менее различимыми друг от друга. Функция с высокой частотой дискретизации должна быть нанесена сплошной линией, остальные 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

2 ответа

Решение

Это проблема с постскриптумным терминалом. Использует относительные координаты при рисовании линий, представляющих функцию. Поскольку это может привести к ошибкам округления, moveto выдается каждые 100 баллов. Это прерывает путь, который становится видимым при использовании шаблонов тире. Патч в источниках однострочный.

В качестве обходного пути я бы предложил вам использовать pdfcairo у которого нет этих проблем. Затем вы можете преобразовать PDF в EPS, если вам это нужно в качестве выходного формата. Или вы могли бы использовать cairolatex eps Терминал.

Спасибо, просто чтобы добавить: я на самом деле использую 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,

Другие вопросы по тегам