Gnuplot:使用stats输出作为数据点
我有三个数据文件,每个文件都有一个矩阵;我使用stats在矩阵中查找每个文件的最大值,并正确显示。我需要使用这三个最大值作为数据点,并绘制它们,以便在我的绘图上有点(1.0,A_max),(2.0,B_max)和(3.0,C_max),其中A_max是使用第一个数据文件的统计数据计算的最大值,B_max来自第二个,C_max来自第三个。以下是我的gp文件的外观: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
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”,