gnuplot X 轴附加参数

gnuplot additional parameter to X axis

我想知道如何为每个 X 参数添加一个参数。如图所示,每个X参数都有一个附加参数。

I 运行 gnuplot 使用以下命令

gnuplot -p -e "reset; set yrange [0:1]; set term png truecolor size 1024,1024; set grid ytics; set grid xtics; set key bottom right; set output 'Recall.png'; set key autotitle columnhead; plot  for [i=2:3] 'Recall' using 1:i with linespoints linecolor i pt 0 ps 3

召回文件内容如下

train   approach1      approach2
2       0.6      0.07
7       0.64      0.076
9       0.65      0.078

我想知道我是否可以添加额外的参数如下

train   approach1      approach2
2(10)       0.6      0.07
7(15)       0.64      0.076
9(20)       0.65      0.078

实际绘制应该根据真实的X参数(2,7,9)附加参数仅用于可视化,应与X一起打印。

许多gnuplot终端提供enhanced选项 模仿后记提供的功能 终端,功能 described here.

您可以使用增强终端结合 set xtics 命令来完成您想要的(请参阅 help set xtics 了解正确的语法):

gnuplot> set term qt enhanced
gnuplot> set xrange [2:10]
gnuplot> set xtics ('{/=8 3} {/=20 (a)}' 3, '6 (c)' 6)
gnuplot> plot sin(x)

有关可用命令的完整说明,请参阅 link。

更新

要自动生成 x 轴标签,可以使用 反引号替换,直接在 gnuplot 命令文件中或在命令行中使用,就像在 OP 方法中一样。

命令行有点长...

gnuplot -p -e "reset; set yrange [0:1]; set term png truecolor size 1024,1024; set grid ; set key bottom right; set output 'Recall.png'; set key autotitle columnhead; `awk -f Recall.awk Recall` ; plot  for [i=2:3] 'Recall' using 1:i with linespoints linecolor i pt 0 ps 3"

关键是使用 awk 脚本输出适当的 gnuplot 命令,这里是 awk 脚本

% cat Recall.awk
BEGIN { printf "set xtics (" }
NR>1  { 
    printf (NR==2?"":",")
    printf ("'{/=8 %d} {/=16 (%d)}' %d", , , ) }
END   { print ")"}

糟糕!

我忘了显示修改后的数据文件格式...

% cat Recall
train   approach1      approach2 
2       0.6        0.07   10
7       0.64      0.076   15
9       0.65      0.078   20

这里是之前命令行的产物

如果您想从数据文件中获取 xtic 标签,可以使用 using ...:xtic(1),它将第一列的值作为 xtic 标签。

缺点可能是,对于数据文件中的每个值,您都会得到一个 xtic,而没有其他值。所以,使用数据文件

train   approach1      approach2
2(10)       0.6      0.07
7(15)       0.64      0.076
9(20)       0.65      0.078

你可以用

作图
reset
set term png truecolor size 1024,1024
set grid ytics
set grid xtics
set key bottom right
set output 'Recall.png'
set key autotitle columnhead
plot for [i=2:3] 'Recall' using 1:i:xtic(1) with linespoints linecolor i pt 7 ps 3

并获得

请注意,这仅使用了正确的 x-values,因为 gnuplot 本身会删除括号内的内容,而不是有效数字。

如果您想为标签部分使用不同的字体大小,您可以添加一个包含参数的附加列。

数据文件Recall2

train   add       approach1      approach2
2       (10)      0.6       0.07
7       (15)      0.64      0.076
9       (20)      0.65      0.078

现在,除了使用 xtic(1),您还可以构造要用作 xticlabel 的字符串:

reset
set term pngcairo truecolor enhance size 1024,1024
set grid ytics
set grid xtics
set key bottom right
set output 'Recall2.png'
set key autotitle columnhead
myxtic(a, b) = sprintf("{%s}{/*1.5 %s}", a, b)
plot for [i=3:4] 'Recall2' using 1:i:xtic(myxtic(strcol(1), strcol(2))) with linespoints linecolor i pt 7 ps 3