Gnuplot 从文件中提取函数范围内的每一行
Gnuplot pull function range from a file for each row
我正在尝试显示一个函数,该函数是每个范围内具有不同系数的线性函数 f(x)=a*x+b。我的文件 (output.txt) 看起来像这样但没有 header:
a b range
-0.0645991 0.439102 0 0.25
-0.230142 0.480488 0.25 0.5
-0.438559 0.584697 0.5 0.75
-0.66962 0.757993 0.75 1
-0.898603 0.986975 1 1.25
-1.09846 1.2368 1.25 1.5
-1.24232 1.45259 1.5 1.75
-1.30601 1.56404 1.75 2
我已经尝试过这些线路,但其中 none 有效:
plot "output.txt" using 1:2 with lines, set xrange using 3:4
plot "output.txt" [():()] ()*x+()
plot "output.txt" <=x<= ? ()*x+() : 0
这是我第一次使用 Gnuplot,我找不到任何从文件中提取范围的示例。
欢迎使用 Whosebug!您可以简单地使用绘图样式 with vectors
。
检查 help vectors
。
绘图命令看起来很复杂,但它很简单。
您需要的四个值是:x
、y
、delta x
和 delta y
,即
在你的例子中
x
:第 3 列
y
: f(x,a,b)
其中 x
是第 3 列,a
和 b
分别来自第 1 列和第 2 列。
dx
: 第 4 列减去第 3 列
dy
: f(x,a,b)
其中 x
来自第 4 列减去 f(x,a,b)
其中 x
来自第 3 列和 a,b
如上.
如果在绘图命令中指定 nohead
,则可以跳过箭头。检查 help arrow
.
代码:
### plotting style with vectors
reset session
$Data <<EOD
a b range
-0.0645991 0.439102 0 0.25
-0.230142 0.480488 0.25 0.5
-0.438559 0.584697 0.5 0.75
-0.66962 0.757993 0.75 1
-0.898603 0.986975 1 1.25
-1.09846 1.2368 1.25 1.5
-1.24232 1.45259 1.5 1.75
-1.30601 1.56404 1.75 2
EOD
f(x,a,b) = a*x + b
plot $Data u 3:(f(,,)):(-):(f(,,)-f(,,)) w vectors lc "red" head title "my function"
### end of code
结果:
我正在尝试显示一个函数,该函数是每个范围内具有不同系数的线性函数 f(x)=a*x+b。我的文件 (output.txt) 看起来像这样但没有 header:
a b range
-0.0645991 0.439102 0 0.25
-0.230142 0.480488 0.25 0.5
-0.438559 0.584697 0.5 0.75
-0.66962 0.757993 0.75 1
-0.898603 0.986975 1 1.25
-1.09846 1.2368 1.25 1.5
-1.24232 1.45259 1.5 1.75
-1.30601 1.56404 1.75 2
我已经尝试过这些线路,但其中 none 有效:
plot "output.txt" using 1:2 with lines, set xrange using 3:4
plot "output.txt" [():()] ()*x+()
plot "output.txt" <=x<= ? ()*x+() : 0
这是我第一次使用 Gnuplot,我找不到任何从文件中提取范围的示例。
欢迎使用 Whosebug!您可以简单地使用绘图样式 with vectors
。
检查 help vectors
。
绘图命令看起来很复杂,但它很简单。
您需要的四个值是:x
、y
、delta x
和 delta y
,即
在你的例子中
x
:第 3 列y
:f(x,a,b)
其中x
是第 3 列,a
和b
分别来自第 1 列和第 2 列。dx
: 第 4 列减去第 3 列dy
:f(x,a,b)
其中x
来自第 4 列减去f(x,a,b)
其中x
来自第 3 列和a,b
如上.
如果在绘图命令中指定 nohead
,则可以跳过箭头。检查 help arrow
.
代码:
### plotting style with vectors
reset session
$Data <<EOD
a b range
-0.0645991 0.439102 0 0.25
-0.230142 0.480488 0.25 0.5
-0.438559 0.584697 0.5 0.75
-0.66962 0.757993 0.75 1
-0.898603 0.986975 1 1.25
-1.09846 1.2368 1.25 1.5
-1.24232 1.45259 1.5 1.75
-1.30601 1.56404 1.75 2
EOD
f(x,a,b) = a*x + b
plot $Data u 3:(f(,,)):(-):(f(,,)-f(,,)) w vectors lc "red" head title "my function"
### end of code
结果: