倍增在gnuplot中不显示相同的y轴范围

倍增在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

使用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
data.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
,由于所有值都是零,如果我设置no
yrange
并从我的文件中删除所有
未设置的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