我有三个数据文件,每个文件都有一个矩阵;我使用统计数据在矩阵中找到每个文件的最大值,并正确显示。我需要使用这三个最大值作为数据点并绘制它们,以使我的图上的点为(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变量。任何帮助将不胜感激。
答案 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