倍增在gnuplot中不显示相同的y轴范围
使用gnuplot(下面的所有文件内容)打印两个数据文件,但如下面的输出图像所示,倍增在gnuplot中不显示相同的y轴范围,plot,gnuplot,Plot,Gnuplot,使用gnuplot(下面的所有文件内容)打印两个数据文件,但如下面的输出图像所示,y范围变化。我需要它是所有绘图的[0:1]。我错过了什么 这两个数据文件分别是data1.dat和data2.dat: #x y1 y2 y3 y4 0 0 1.1 0 3.0 1 0 1.5 0 1.9 2 0 2.1 0 2.4 3 0 1.0 0 1.4 4 0 3.2 0 1.6 5 0 2.8 0 1.2 及 gnuplot
y范围变化。我需要它是所有绘图的[0:1]
。我错过了什么
这两个数据文件分别是data1.dat
和data2.dat
:
#x y1 y2 y3 y4
0 0 1.1 0 3.0
1 0 1.5 0 1.9
2 0 2.1 0 2.4
3 0 1.0 0 1.4
4 0 3.2 0 1.6
5 0 2.8 0 1.2
及
gnuplotdata.gp
文件:
set border linewidth 1.5
mpl_top = 0.4 #inch outer top margin, title goes here
mpl_bot = 0.7 #inch outer bottom margin, x label goes here
mpl_left = 0.9 #inch outer left margin, y label goes here
mpl_right = 0.1 #inch outer right margin, y2 label goes here
mpl_height = 1.5 #inch height of individual plots
mpl_width = 1.8 #inch width of individual plots
mpl_dx = 0.3 #inch inter-plot horizontal spacing
mpl_dy = 0.1 #inch inter-plot vertical spacing
mpl_ny = 1 #number of rows
mpl_nx = 4 #number of columns
# calculate full dimensions
xsize = mpl_left+mpl_right+(mpl_width*mpl_nx)+(mpl_nx-1)*mpl_dx
ysize = mpl_top+mpl_bot+(mpl_ny*mpl_height)+(mpl_ny-1)*mpl_dy
# placement functions
# rows are numbered from bottom to top
bot(n) = (mpl_bot+(n-1)*mpl_height+(n-1)*mpl_dy)/ysize
top(n) = 1-((mpl_top+(mpl_ny-n)*(mpl_height+mpl_dy))/ysize)
# columns are numbered from left to right
left(n) = (mpl_left+(n-1)*mpl_width+(n-1)*mpl_dx)/xsize
right(n) = 1-((mpl_right+(mpl_nx-n)*(mpl_width+mpl_dx))/xsize)
set terminal epslatex size 3.5,2.62 color colortext
set output 'data.tex'
set xlabel '$x$'
set ylabel '$y$'
set key off
set multiplot
#-----------------------------------------------
# set horizontal margins for first column
set lmargin at screen left(1)
set rmargin at screen right(1)
# set horizontal margins for first row (bottom)
set tmargin at screen top(1)
set bmargin at screen bot(1)
stats "data1.dat" u 2 name "A"
stats "data2.dat" u 2 name "B"
if (A_max <= 0.0) {A_max = 0.00001; set yr[0:1]}
if (B_max <= 0.0) {B_max = 0.00002; set yr[0:1]}
plot 'data1.dat' u 1:(A_max>B_max ? $2/A_max : $2/A_max) w l dt 1 lt rgb "red", 'data2.dat' u 1:(A_max>B_max ? $2/A_max : $2/A_max) w l dt 1 lt rgb "blue"
#-----------------------------------------------
unset yr
unset ylabel
#-----------------------------------------------
# set horizontal margins for second column
set lmargin at screen left(2)
set rmargin at screen right(2)
# set horizontal margins for first row (bottom)
set tmargin at screen top(1)
set bmargin at screen bot(1)
stats "data1.dat" u 3 name "A"
stats "data2.dat" u 3 name "B"
if (A_max <= 0.0) {A_max = 0.00001; set yr[0:1]}
if (B_max <= 0.0) {B_max = 0.00002; set yr[0:1]}
plot 'data1.dat' u 1:(A_max>B_max ? $3/A_max : $3/A_max) w l dt 1 lt rgb "red", 'data2.dat' u 1:(A_max>B_max ? $3/A_max : $3/A_max) w l dt 1 lt rgb "blue"
#-----------------------------------------------
unset yr
#-----------------------------------------------
# set horizontal margins for third column
set lmargin at screen left(3)
set rmargin at screen right(3)
# set horizontal margins for first row (bottom)
set tmargin at screen top(1)
set bmargin at screen bot(1)
stats "data1.dat" u 4 name "A"
stats "data2.dat" u 4 name "B"
if (A_max <= 0.0) {A_max = 0.00001; set yr[0:1]}
if (B_max <= 0.0) {B_max = 0.00002; set yr[0:1]}
plot 'data1.dat' u 1:(A_max>B_max ? $4/A_max : $4/A_max) w l dt 1 lt rgb "red", 'data2.dat' u 1:(A_max>B_max ? $4/A_max : $4/A_max) w l dt 1 lt rgb "blue"
#-----------------------------------------------
unset yr
#-----------------------------------------------
# set horizontal margins for fourth column
set lmargin at screen left(4)
set rmargin at screen right(4)
# set horizontal margins for first row (bottom)
set tmargin at screen top(1)
set bmargin at screen bot(1)
stats "data1.dat" u 5 name "A"
stats "data2.dat" u 5 name "B"
if (A_max <= 0.0) {A_max = 0.00001; set yr[0:1]}
if (B_max <= 0.0) {B_max = 0.00002; set yr[0:1]}
plot 'data1.dat' u 1:(A_max>B_max ? $5/A_max : $5/A_max) w l dt 1 lt rgb "red", 'data2.dat' u 1:(A_max>B_max ? $5/A_max : $5/A_max) w l dt 1 lt rgb "blue"
unset multiplot
unset output
设置边框线宽1.5
mpl_top=0.4英寸外上边距,标题在这里
mpl_bot=0.7英寸外底边距,x标签位于此处
mpl_left=0.9英寸左外缘,y标签在这里
mpl_right=0.1英寸右外缘,y2标签在这里
mpl_高度=单个地块的1.5英寸高度
mpl_宽度=单个绘图的1.8英寸宽度
mpl_dx=0.3英寸打印间水平间距
mpl_dy=0.1英寸图间垂直间距
mpl_ny=1#行数
mpl_nx=4#列数
#计算全尺寸
xsize=mpl_left+mpl_right+(mpl_width*mpl_nx)+(mpl_nx-1)*mpl_dx
ysize=mpl\u top+mpl\u bot+(mpl\u ny*mpl\u height)+(mpl\u ny-1)*mpl\u dy
#布局函数
#行从下到上编号
机器人(n)=(mpl_机器人+(n-1)*mpl_高度+(n-1)*mpl_dy)/ysize
顶部(n)=1-((mpl_顶部+(mpl_ny-n)*(mpl_高度+mpl_dy))/ysize)
#列从左到右编号
左(n)=(mpl_左+(n-1)*mpl_宽度+(n-1)*mpl_dx)/xsize
右(n)=1-((mpl_右+(mpl_nx-n)*(mpl_宽度+mpl_dx))/xsize)
设置端子尺寸3.5,2.62彩色文本
设置输出“data.tex”
设置xlabel“$x$”
设置标签“$y$”
点火
集多点
#-----------------------------------------------
#设置第一列的水平边距
在屏幕左侧设置lmargin(1)
在屏幕右侧设置rmargin(1)
#设置第一行(底部)的水平边距
在屏幕顶部设置tmargin(1)
将bmargin设置为屏幕机器人(1)
统计数据“data1.dat”u2名称“A”
统计数据“data2.dat”u2名称“B”
如果(A_max B_max?$2/A_max:$2/A_max)w l dt 1 lt rgb“蓝色”
#-----------------------------------------------
未结算年
未设置标签
#-----------------------------------------------
#设置第二列的水平边距
在屏幕左侧设置lmargin(2)
在屏幕右侧设置rmargin(2)
#设置第一行(底部)的水平边距
在屏幕顶部设置tmargin(1)
将bmargin设置为屏幕机器人(1)
统计数据“data1.dat”u3名称“A”
统计数据“data2.dat”u3名称“B”
如果(A_max B_max?$3/A_max:$3/A_max)w l dt 1 lt rgb“蓝色”
#-----------------------------------------------
未结算年
#-----------------------------------------------
#设置第三列的水平边距
在屏幕左侧设置lmargin(3)
在屏幕右侧设置rmargin(3)
#设置第一行(底部)的水平边距
在屏幕顶部设置tmargin(1)
将bmargin设置为屏幕机器人(1)
统计数据“data1.dat”u4名称“A”
统计数据“data2.dat”u4名称“B”
如果(A_max B_max?$4/A_max:$4/A_max)带1 lt rgb“蓝色”
#-----------------------------------------------
未结算年
#-----------------------------------------------
#设置第四列的水平边距
在屏幕左侧设置lmargin(4)
在屏幕右侧设置rmargin(4)
#设置第一行(底部)的水平边距
在屏幕顶部设置tmargin(1)
将bmargin设置为屏幕机器人(1)
统计数据“data1.dat”u5名称“A”
统计数据“data2.dat”u5名称“B”
如果(A_max B_max?$5/A_max:$5/A_max)带1 lt rgb“蓝色”
未设置多点
未设置输出
输出为:
p.S.抱歉文件太长,但想把所有信息都放在这里。请让我知道它是否/在哪里变得混乱。使用设置yrange[0:1]
并在处理第二个绘图的命令时删除那些给出所有超出范围的点的'unset yr'。嗯,实际上,yrange设置也适用于stats
调用。但是为什么只为负的A_max
或B_max
调用set yr[0:1]
?因为对于y1
和y3
,由于所有值都是零,如果我设置noyrange
并从我的文件中删除所有未设置的yr
,它在第一个绘图命令中显示所有点y值未定义
,并在那里停止。我调用设置这些值以超过该值,并显示y1
的空白绘图,其中所有值都位于x轴上
,然后继续绘图y2
。它给出了undefined
错误,因为我在plot
命令中进行规范化,即将每列除以最大值,因为y1
和y3
的值为零that@Christoph在每个绘图后使用unset yr
,并使用set yr[0:1]
在stats
命令工作后,在每个绘图中。谢谢
set border linewidth 1.5
mpl_top = 0.4 #inch outer top margin, title goes here
mpl_bot = 0.7 #inch outer bottom margin, x label goes here
mpl_left = 0.9 #inch outer left margin, y label goes here
mpl_right = 0.1 #inch outer right margin, y2 label goes here
mpl_height = 1.5 #inch height of individual plots
mpl_width = 1.8 #inch width of individual plots
mpl_dx = 0.3 #inch inter-plot horizontal spacing
mpl_dy = 0.1 #inch inter-plot vertical spacing
mpl_ny = 1 #number of rows
mpl_nx = 4 #number of columns
# calculate full dimensions
xsize = mpl_left+mpl_right+(mpl_width*mpl_nx)+(mpl_nx-1)*mpl_dx
ysize = mpl_top+mpl_bot+(mpl_ny*mpl_height)+(mpl_ny-1)*mpl_dy
# placement functions
# rows are numbered from bottom to top
bot(n) = (mpl_bot+(n-1)*mpl_height+(n-1)*mpl_dy)/ysize
top(n) = 1-((mpl_top+(mpl_ny-n)*(mpl_height+mpl_dy))/ysize)
# columns are numbered from left to right
left(n) = (mpl_left+(n-1)*mpl_width+(n-1)*mpl_dx)/xsize
right(n) = 1-((mpl_right+(mpl_nx-n)*(mpl_width+mpl_dx))/xsize)
set terminal epslatex size 3.5,2.62 color colortext
set output 'data.tex'
set xlabel '$x$'
set ylabel '$y$'
set key off
set multiplot
#-----------------------------------------------
# set horizontal margins for first column
set lmargin at screen left(1)
set rmargin at screen right(1)
# set horizontal margins for first row (bottom)
set tmargin at screen top(1)
set bmargin at screen bot(1)
stats "data1.dat" u 2 name "A"
stats "data2.dat" u 2 name "B"
if (A_max <= 0.0) {A_max = 0.00001; set yr[0:1]}
if (B_max <= 0.0) {B_max = 0.00002; set yr[0:1]}
plot 'data1.dat' u 1:(A_max>B_max ? $2/A_max : $2/A_max) w l dt 1 lt rgb "red", 'data2.dat' u 1:(A_max>B_max ? $2/A_max : $2/A_max) w l dt 1 lt rgb "blue"
#-----------------------------------------------
unset yr
unset ylabel
#-----------------------------------------------
# set horizontal margins for second column
set lmargin at screen left(2)
set rmargin at screen right(2)
# set horizontal margins for first row (bottom)
set tmargin at screen top(1)
set bmargin at screen bot(1)
stats "data1.dat" u 3 name "A"
stats "data2.dat" u 3 name "B"
if (A_max <= 0.0) {A_max = 0.00001; set yr[0:1]}
if (B_max <= 0.0) {B_max = 0.00002; set yr[0:1]}
plot 'data1.dat' u 1:(A_max>B_max ? $3/A_max : $3/A_max) w l dt 1 lt rgb "red", 'data2.dat' u 1:(A_max>B_max ? $3/A_max : $3/A_max) w l dt 1 lt rgb "blue"
#-----------------------------------------------
unset yr
#-----------------------------------------------
# set horizontal margins for third column
set lmargin at screen left(3)
set rmargin at screen right(3)
# set horizontal margins for first row (bottom)
set tmargin at screen top(1)
set bmargin at screen bot(1)
stats "data1.dat" u 4 name "A"
stats "data2.dat" u 4 name "B"
if (A_max <= 0.0) {A_max = 0.00001; set yr[0:1]}
if (B_max <= 0.0) {B_max = 0.00002; set yr[0:1]}
plot 'data1.dat' u 1:(A_max>B_max ? $4/A_max : $4/A_max) w l dt 1 lt rgb "red", 'data2.dat' u 1:(A_max>B_max ? $4/A_max : $4/A_max) w l dt 1 lt rgb "blue"
#-----------------------------------------------
unset yr
#-----------------------------------------------
# set horizontal margins for fourth column
set lmargin at screen left(4)
set rmargin at screen right(4)
# set horizontal margins for first row (bottom)
set tmargin at screen top(1)
set bmargin at screen bot(1)
stats "data1.dat" u 5 name "A"
stats "data2.dat" u 5 name "B"
if (A_max <= 0.0) {A_max = 0.00001; set yr[0:1]}
if (B_max <= 0.0) {B_max = 0.00002; set yr[0:1]}
plot 'data1.dat' u 1:(A_max>B_max ? $5/A_max : $5/A_max) w l dt 1 lt rgb "red", 'data2.dat' u 1:(A_max>B_max ? $5/A_max : $5/A_max) w l dt 1 lt rgb "blue"
unset multiplot
unset output