Gnuplot:使用统计信息输出作为数据点

时间:2018-03-16 16:39:35

标签: gnuplot

我有三个数据文件,每个文件都有一个矩阵;我使用统计数据在矩阵中找到每个文件的最大值,并正确显示。我需要使用这三个最大值作为数据点并绘制它们,以使我的图上的点为(1.0,A_max),(2.0,B_max)和(3.0,C_max)其中A_max是使用来自的统计数据计算的最大值第一个数据文件,第二个是B_max,第三个是C_max。以下是我的gp文件的样子:

    set terminal epslatex size 3.5,2.62 color colortext
    set output 'data.tex'
    set xlabel '$x$'
    set ylabel '$y$'

    stats 'dataA.txt' matrix name "A"
    show variables A_
    stats 'dataB.txt' matrix name "B"
    show variables B_
    stats 'dataC.txt' matrix name "C"
    show variables C_

    plot '-' w p, '-' w p, '-' w p
    1.0 A_max
    e   
    2.0 B_max
    e
    3.0 C_max
    e

我得到的情节,如下所示。

Data plot

显然,它将x轴设为0,而我想要的x轴对应于y。不知道我错过了什么,可能是如何读取stats变量。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

内联数据与您使用的一样,按原样使用,无需任何变量替换。 使用set print $data将数据打印到指定数据块$data

set print $data
stats 'dataA.txt' matrix name "A"
print sprintf("%e A", A_max)
stats 'dataB.txt' matrix name "B"
print sprintf("%e B", B_max)
stats 'dataC.txt' matrix name "C"
print sprintf("%e C", C_max)
plot $data using 0:1:xticlabel(2) w p notitle

或更自动化:

set print $data
do for [f in "A B C"]{
    stats 'data'.f.'.txt' matrix name f
    print sprintf("%e %s", value(f.'_max), f)
}
plot $data using 0:1:xticlabel(2) w p notitle