Gnuplot:使用stats输出作为数据点

Gnuplot:使用stats输出作为数据点,gnuplot,Gnuplot,我有三个数据文件,每个文件都有一个矩阵;我使用stats在矩阵中查找每个文件的最大值,并正确显示。我需要使用这三个最大值作为数据点,并绘制它们,以便在我的绘图上有点(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 out

我有三个数据文件,每个文件都有一个矩阵;我使用stats在矩阵中查找每个文件的最大值,并正确显示。我需要使用这三个最大值作为数据点,并绘制它们,以便在我的绘图上有点(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
我得到的情节如下所示


很明显,它将x轴取为0,并且x轴上的点对应于y。不确定我遗漏了什么,可能是如何读取stats变量。如有任何帮助,我们将不胜感激。

内联数据与您正在使用的数据一样,按原样使用,无需任何变量替换。 使用
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

工作起来很有魅力!非常感谢你!!使用0:2:xtic(1)w p notitle来绘制图形,从第一列使用xtic并绘制第一列中的最大值,不应该是
plot$data吗?我试过了,但是你建议的结果是正确的,我不明白为什么。
xtic
xticlabel
的快捷方式
使用0:1:xtic(2)
意味着:使用第0列(这是一个隐式列,包含行号)中的值作为x值,使用第一列(最大值)中的值作为y,并使用第二列中的字符串作为x轴上每个数据点的显式标签。但是在
打印sprintf(“%ea”,A_max)
0列是我们的行号,第一列是字符串,第二列是我们需要的最大值,对吗?那么,是否应该使用0:2:xtic(1)
工作?如果我在这里太天真,我很抱歉,但我可能遗漏了什么。不,第一列是A_max值,格式为数字(“%e”),第二列包含字符串“A”,