在 gnuplot 中的 x 轴上添加基于模式的数字

Adding pattern based numbers on x axis in gnuplot

我只有 30 个 bin 中 y 轴的数据。我想通过在 Gnuplot 脚本中添加 x 轴来通过 Gnuplot 进行绘图。 x 轴的范围是 [-5,2],有 30 个 bin。如何在 x 轴上添加模式或基于公式的数字?或者我可以使用任何 grep 命令在数据文件本身中为 x 轴添加这种模式吗?

“file1.txt”的数据(例如)如下;

0.000000e+00
0.000000e+00
1.936836e+01
1.347826e+02
2.204809e+02
3.531409e+02
4.656366e+02
6.431357e+02
8.020624e+02
----
----
---- up to 30 bins

Gnuplot脚本大纲如下;

set style line 1 dt 1 lc rgb "black" lw 2 pt 1 ps default
set style line 2 dt 2 lc rgb "black" lw 5 pt 1 ps default

pl 'file1.txt' u ([=11=]):() w l smooth bezier ls 1 title "title1",\
   'file2.txt' u ([=11=]):() w l smooth bezier ls 2 title "title2"

您可以使用函数将 x 轴值从 x 索引(默认)转换为所需值。例如,假设30条数据记录线性映射到[-5, 2],索引x值是默认的[0,1,2 ...,29]

f(x)=(x*7/29) - 5(当然这个应该是-5,不是-2)

将间隔映射到 [-5, 2]。

尝试help stats确定数据中的记录数。 (STATS_records)

$Data <<EOD
0.000000e+00
0.000000e+00
1.936836e+01
1.347826e+02
2.204809e+02
3.531409e+02
4.656366e+02
6.431357e+02
8.020624e+02
EOD
f(x)=(x*7/29) - 5            # map interval [0,29] to interval [-5,2] linearly
set xrange [-5:2]            # only 9 values in this data set
plot $Data using (f([=10=])):() with lines   # decorate as you see fit

Quick sample plot