如何将 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 中是否存在用于此的行命令?我敢肯定,必须有一种更优雅的方式来编写这个,而不是将每个函数除以所需的因子。

我想到了两种可能的方法:

  1. 如果要避免xtic标签中有太多零,只需将xtic标签格式设置为engineering

    set format x "%.0s%c"

    这将显示,例如10000 和 100000 分别为 10k 和 100k。

  2. 如果您将数据的 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

结果: