如何将 x 轴格式化为较小的比例?
How to format x axis to a smaller scale?
这就是我想要做的。
x 轴上的值来自 10000、20000、30000、... 100000。我试图这样写:10、20、30、40、... 100(仅 x 轴)
在 Gnuplot 中有什么方法可以做到这一点吗?
到目前为止我有这个:
(data.dat - 数据示例)
# x y
10000 +1.24241522E-04
11000 +1.28623514E-04
12000 +1.35229020E-04
13000 +1.43767741E-04
14000 +1.53409148E-04
15000 +1.63788695E-04
16000 +1.75429485E-04
17000 +1.88827813E-04
18000 +2.02984785E-04
19000 +2.20830420E-04
...
(我的 gnuplot 脚本)
set term png
set out 'example.png'
U0 = 0.00732 #parameters for this particular problem
v1 = 68000
b1 = 6550
v2 = 59600
b2 = 6050
I = sqrt(-1)
A(w, w0, b) = ((w0)**2)/(((w0)**2) - ((w)**2) + 2*I*w*b)
f(x) = U0*abs(A(2*pi*x, 2*pi*v1, b1) - A(2*pi*x, 2*pi*v2, b2))
set xlabel "x"
set ylabel "y"
fit f(x) 'data.dat' u 1:2 via U0, v1, b1, v2, b2
plot 'data.dat' u 1:2 t "Title1" w p, U(x) t "Title2"
set out
但是我该怎么做呢?
我试过这个例子
How to scale the axes in Gnuplot
但它不起作用。
见下文。
# I modified the things a little bit
f(x) = (.... ... ....)/1000
fit f(x) 'data.dat' u (/1000.):2 via U0, v1, b1, v2, b2
plot 'data.dat' u (/1000.):2 t "Title1" w p, f(x) t "Title2"
但是现在拟合函数消失了!
如何在不让其他功能消失的情况下修改 x 轴?
gnuplot 中是否存在用于此的行命令?我敢肯定,必须有一种更优雅的方式来编写这个,而不是将每个函数除以所需的因子。
我想到了两种可能的方法:
如果要避免xtic标签中有太多零,只需将xtic标签格式设置为engineering
set format x "%.0s%c"
这将显示,例如10000 和 100000 分别为 10k 和 100k。
如果您将数据的 x 值缩放(在您的情况下:除以)1000,gnuplot 将使用此 x 范围绘制函数 f(x)
。由于这将给出 x 值,该值是 1000 的一个因数太小,因此您必须相应地将 x 值缩放 1000 个因数(在您的情况下:相乘)。
代码:
### avoid too many zeros in xtic labels
reset session
# create some random test data
set print $Data
A = rand(0)*10+5
B = rand(0)*50000+25000
C = rand(0)*5000+5000
do for [i=10000:100000:500] {
print sprintf("%g %g",i,A*exp(-((real(i)-B)/C)**2))
}
set print
a=1; b=50000; c=5000 # give some reasonable starting values
f(x) = a*exp(-((x-b)/c)**2)
set fit quiet nolog
fit f(x) $Data u 1:2 via a,b,c
set multiplot layout 1,2
set format x "%.0s%c" # set xtics to engineering
plot $Data u 1:2 w p, \
f(x) w l lc "red"
set format x "%g" # set xtics to default
plot $Data u (/1000):2 w p, \
f(x*1000) w l lc "red"
unset multiplot
### end of code
结果:
这就是我想要做的。 x 轴上的值来自 10000、20000、30000、... 100000。我试图这样写:10、20、30、40、... 100(仅 x 轴)
在 Gnuplot 中有什么方法可以做到这一点吗?
到目前为止我有这个: (data.dat - 数据示例)
# x y
10000 +1.24241522E-04
11000 +1.28623514E-04
12000 +1.35229020E-04
13000 +1.43767741E-04
14000 +1.53409148E-04
15000 +1.63788695E-04
16000 +1.75429485E-04
17000 +1.88827813E-04
18000 +2.02984785E-04
19000 +2.20830420E-04
...
(我的 gnuplot 脚本)
set term png
set out 'example.png'
U0 = 0.00732 #parameters for this particular problem
v1 = 68000
b1 = 6550
v2 = 59600
b2 = 6050
I = sqrt(-1)
A(w, w0, b) = ((w0)**2)/(((w0)**2) - ((w)**2) + 2*I*w*b)
f(x) = U0*abs(A(2*pi*x, 2*pi*v1, b1) - A(2*pi*x, 2*pi*v2, b2))
set xlabel "x"
set ylabel "y"
fit f(x) 'data.dat' u 1:2 via U0, v1, b1, v2, b2
plot 'data.dat' u 1:2 t "Title1" w p, U(x) t "Title2"
set out
但是我该怎么做呢?
我试过这个例子
How to scale the axes in Gnuplot
但它不起作用。
见下文。
# I modified the things a little bit
f(x) = (.... ... ....)/1000
fit f(x) 'data.dat' u (/1000.):2 via U0, v1, b1, v2, b2
plot 'data.dat' u (/1000.):2 t "Title1" w p, f(x) t "Title2"
但是现在拟合函数消失了!
如何在不让其他功能消失的情况下修改 x 轴?
gnuplot 中是否存在用于此的行命令?我敢肯定,必须有一种更优雅的方式来编写这个,而不是将每个函数除以所需的因子。
我想到了两种可能的方法:
如果要避免xtic标签中有太多零,只需将xtic标签格式设置为engineering
set format x "%.0s%c"
这将显示,例如10000 和 100000 分别为 10k 和 100k。
如果您将数据的 x 值缩放(在您的情况下:除以)1000,gnuplot 将使用此 x 范围绘制函数
f(x)
。由于这将给出 x 值,该值是 1000 的一个因数太小,因此您必须相应地将 x 值缩放 1000 个因数(在您的情况下:相乘)。
代码:
### avoid too many zeros in xtic labels
reset session
# create some random test data
set print $Data
A = rand(0)*10+5
B = rand(0)*50000+25000
C = rand(0)*5000+5000
do for [i=10000:100000:500] {
print sprintf("%g %g",i,A*exp(-((real(i)-B)/C)**2))
}
set print
a=1; b=50000; c=5000 # give some reasonable starting values
f(x) = a*exp(-((x-b)/c)**2)
set fit quiet nolog
fit f(x) $Data u 1:2 via a,b,c
set multiplot layout 1,2
set format x "%.0s%c" # set xtics to engineering
plot $Data u 1:2 w p, \
f(x) w l lc "red"
set format x "%g" # set xtics to default
plot $Data u (/1000):2 w p, \
f(x*1000) w l lc "red"
unset multiplot
### end of code
结果: