Gnuplot 通过选择水平轴上的范围来拟合图形和绘制线

Gnuplot 通过选择水平轴上的范围来拟合图形和绘制线,gnuplot,Gnuplot,我试着画一张图,用一条直线拟合它 f1(x)=a1+b1*x fit [0:80] f1(x) 'diff-xy-bcmLyo25perS.dat' via a1,b1 f2(x)=a2+b2*x fit [100:220] f2(x) 'diff-xy-bcmLyo25perS.dat' via a2,b2 我尝试使用命令将两个图绘制到同一个图形中: f(x) = x < 60 ? f1(x) : f2(x) plot 'diff-xy-bcmLyo25perS.dat' u

我试着画一张图,用一条直线拟合它

f1(x)=a1+b1*x
fit [0:80] f1(x) 'diff-xy-bcmLyo25perS.dat' via a1,b1

f2(x)=a2+b2*x
fit [100:220] f2(x) 'diff-xy-bcmLyo25perS.dat' via a2,b2
我尝试使用命令将两个图绘制到同一个图形中:

f(x) = x < 60 ? f1(x) : f2(x)

plot    'diff-xy-bcmLyo25perS.dat' using 1:2 with lines linestyle 1 title "{/Symbol b}BCMal-C_{12}C_{8}", f(x) lw 3.0 lc rgb 'black'
f(x)=x<60?f1(x):f2(x)
使用1:2和线条样式1标题“{/Symbol b}BCMal-C{12}C{8}”、f(x)lw 3.0 lc rgb“黑色”绘制“diff-xy-bcmLyo25perS.dat”

我得到了上面的情节

在这幅图中,我们可以看到有两条线以80度(水平比例)相交,它的形状像“v”

我希望消除“v”形交叉点,我希望得到两条单独的线,一条从0到80,另一条从100到220

我怎么能得到这个

谢谢你的帮助


提前谢谢

您可以利用gnuplot不绘制
infinity
NaN
值(如
1.0/0

使用

编辑: 对不起,这和谢尔盖·伊兹梅洛夫的答案基本上是一样的,我没有回答

回答:

使用特殊文件
“+”
,该文件为绘图提供x个值,然后可以使用您选择的函数进行采样,包括在输入超出范围时忽略输入的函数。然后您可以直接使用您的
f1(x)
f2(x)

plot "+" using ($1):(0 < $1 && $1 < 80 ? f1($1) : 1/0), \
"+" using ($1):(100 < $1 && $1 < 220 ? f2($1) : 1/0)
使用($1)绘制“+”:(0<$1&$1<80?f1($1):1/0)\
“+”使用($1):(100<$1&$1<220?f2($1):1/0)

使用gnuplot 5.0,您可以为不同的功能指定不同的范围:

set style data lines
plot 'diff-xy-bcmLyo25perS.dat' using 1:2 ls 1, \
    [0:80] f1(x) lw 3.0 lc rgb 'black',\
    [100:220] f2(x) lw 3.0 lc rgb 'black'
请注意,这只起作用,因为首先要打印数据文件。仅绘图

plot [0:80] f1(x), [100:220] f2(x)
不起作用,因为第一个范围设置相当于全局设置xrange[0:80](一直如此),所以第二个功能根本不可见


不过,在您的情况下,它应该可以正常工作。

谢谢您的回复。我安装了GNUPLOT 5.0并尝试运行现有的脚本进行打印,但出现了一个错误,即“未知或不明确的终端类型;仅为列表键入“set terminal”。为什么PNG不起作用?我配置为(./configure--with cairo)。是否需要进行任何调整?但是,我使用了postscript终端,它工作正常。我不知道,可能您没有所有的库标题,请在运行
/configure
后查看屏幕输出,或者查看
config.log
了解详细信息。亲爱的#Christoph,我将线条样式定义为(设置样式行1 lt 1 lc rgb“red”lw 2.0)。当我在plot命令中使用它时(使用1:2 ls 1绘制'diff-xy-bcmLyo25perS.dat',我得到的线型为“+”。我试图得到简单的实线,但我做不到。你能解释一下为什么我得到“+”以及如何得到简单的线吗?谢谢使用
打印指定打印样式。。。带行
set style data lines
plot 'diff-xy-bcmLyo25perS.dat' using 1:2 ls 1, \
    [0:80] f1(x) lw 3.0 lc rgb 'black',\
    [100:220] f2(x) lw 3.0 lc rgb 'black'
plot [0:80] f1(x), [100:220] f2(x)