Не можете изменить выход для режима мультиплота, GNUPLOT? - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь построить несколько выходных файлов в gnuplot, используя команду "do for sprintf".Мой код

reset
#set encoding utf8
set encoding iso_8859_1
set terminal postscript eps enhanced color font 'Times-Bold' 25

do for [t=1:4] {

#set output 'LeftChiral_DOS.png'
set output sprintf('Trial-Ru%d-d-up.eps',t)

set size  1.0, 0.94

datafile1 = sprintf('Ru%d-up.dat',t)
datafile2 = sprintf('Ru%d-down.dat',t)


set multiplot layout 1,2

set style data linespoints
#
set origin 0.2, 0

set  noxzeroaxis
set tics out
set border linewidth 2.
set style line 1 lc rgb "red" lt 1 lw 1.5 pt 7
set style line 2 lc rgb "blue" lt 1 lw 2.0
set style line 3 lc rgb "green" lt 1 lw 2.0
set style line 4 lc rgb "black" lt 2 lw 1.5 dt 2
#
set key
set key vertical at 0.9,1.6
set key font ",20"
set noxtics
set ylabel "Energy (eV)"
set xtics ( " {/Symbol G} " 0, " Y " 0.09049, " C " 0.14273, " Z "   0.23322," D " 0.27012, " E " 0.36061," A " 0.41285, " B " 0.50334, " {/Symbol G} " 0.54024)

set origin 0.1,0

set yrange[   -8.0:   4.0]
set xrange[   0.000:    0.54024 ]
 unset key
 weight=15

 plot datafile1 u ($1):2:($3*weight) every 3 w points lw 2 lc rgb "#FF0000" pt 6

 plot datafile2 u ($1):2:($3*weight) every 3 w points lw 2 lc rgb "#FF0000" pt 6
 }

Как вы можете видеть, я использовал do для и sprintf для вывода нескольких файлов для каждого значения переменной t.

Но gnuplot выдает ошибку "Невозможно изменить вывод для multiplotрежим "

Может кто-нибудь, пожалуйста, помогите мне решить эту проблему.

Спасибо

1 Ответ

0 голосов
/ 18 сентября 2018

Так что я ошибся в своем комментарии.Вам просто нужно unset multiplot, прежде чем снова установить выход.Итак, вот минимальный пример, чтобы повторить вашу ошибку (использование минимального примера важно, когда вы публикуете в stackoverflow)

#!/usr/bin/gnuplot
set term pdf
do for [t=1:4] {

  set output "test_".t.".pdf"
  set multiplot

  f(x)=x*t
  g(x)=-x*t
  set xrange [0:100]
  plot g(x)
  plot f(x)
}

Добавив unset multiplot в конце, вы создадите четыре файла мультиплота без ошибок:

#!/usr/bin/gnuplot
set term pdf
do for [t=1:4] {

  set output "test_".t.".pdf"
  set multiplot

  f(x)=x*t
  g(x)=-x*t
  set xrange [0:100]
  plot g(x)
  plot f(x)
  unset multiplot
}

Я полагаю, это потому, что, как сказано в руководстве :

команда множественного набора команд переводит gnuplot в режим мультиплота, в котором несколько графиковразмещены на одной странице, в окне или на экране.

бессмысленно размещать графики в разных файлах, помещая их в один и тот же файл.

...