首页 > 解决方案 > 不能更改多图模式的输出,GNUPLOT?

问题描述

我正在尝试使用“do for sprintf”在 gnuplot 中绘制多个输出文件。我的代码是

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 for 和 sprintf 为 t 变量的每个值输出多个文件。

但是 gnuplot 给我错误“无法更改多图模式的输出”

谁能帮我解决这个问题。

谢谢

标签: gnuplot

解决方案


所以我的评论是错误的。您只需要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
}

我想那是因为正如手册所说:

命令 set multiplot 将 gnuplot 置于 multiplot 模式,在这种模式下,多个绘图放置在同一页面、窗口或屏幕上。

将绘图放在不同的文件中而将它们放在同一个文件中是没有意义的。


推荐阅读