gnuplot - 不能更改多图模式的输出,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 给我错误“无法更改多图模式的输出”
谁能帮我解决这个问题。
谢谢
解决方案
所以我的评论是错误的。您只需要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 模式,在这种模式下,多个绘图放置在同一页面、窗口或屏幕上。
将绘图放在不同的文件中而将它们放在同一个文件中是没有意义的。
推荐阅读
- android - 媒体后台服务在 Android 9 (Api 28) 上被系统杀死
- c++ - 右值参数导致的多重实现
- reactjs - 如何水平对齐引导文本和按钮
- python - Beautifulsoup 和 Panda - 帮助修改多页代码
- wordpress - woocommerce add icon to checkout fields
- vb.net - 我无法以编程方式获取在 TreeView 中添加的节点的名称
- ios - UIWebView 不会对 loadHTMLString 函数下载的资源使用磁盘缓存
- c# - 此 MySqlConnection 已在使用中
- android - Gradle 构建类型相互覆盖
- python - 在一列上按另一个对数据框进行排序 - 熊猫