具有多个数据集和高/低错误条的gnuplot数据文件

具有多个数据集和高/低错误条的gnuplot数据文件,gnuplot,Gnuplot,我以前没有使用过gnu绘图,但在谷歌搜索之后,我似乎不知道如何格式化我的数据文件 我有多个数据集,每个数据集都有自己的Yhigh和Ylow值。我希望将这3个数据集绘制在同一个图表上 #X Y Yhigh Ylow 8 12181.0375 13198.4 11630.5 16 6096.362708 6500.86 4660.34 32 3086.159688 3282.08 2607.13 64 1668.613958 196

我以前没有使用过gnu绘图,但在谷歌搜索之后,我似乎不知道如何格式化我的数据文件

我有多个数据集,每个数据集都有自己的Yhigh和Ylow值。我希望将这3个数据集绘制在同一个图表上

#X    Y          Yhigh     Ylow  
8    12181.0375  13198.4   11630.5
16   6096.362708 6500.86   4660.34
32   3086.159688 3282.08   2607.13
64   1668.613958 1963.03   1106.13
128  795.7439583 3929.95   554.027
192  486.0394774 614.181   362.243
我有两个以上的数据集,我想在同一个图表上绘图。X值是相同的。Y值不同。但是,近似的Y范围将是相似的(因此图形看起来不会那么奇怪)

我了解到,对于多个Y值,可以使用:

#X    Y1    Y2    Y3
在.dat文件中,然后在打印时,分开为:

gnuplot> plot "test.dat" using 1:2 with lines,\
"test.dat" using 1:3 with lines

但是,当Y1具有Y1_高值和Y1_低值,Y2具有Y2_高值和Y2_低值等时,我不确定如何执行此操作。

gnuplot数据文件的“自然”格式将使用空格和大括号分隔值:

X Y1 Y2 Y3
现在你只需要

set style data lines
plot 'test.data' using 1:2, '' using 1:3
如果使用逗号作为分隔符,则必须使用

set datafile separator ','
以正确地绘制它们。最后,使用您的格式将在
using
语句之后使用显式格式:

plot 'test.dat' using 1:2 '(%lf,%lf,%lf,%lf)'

但这并不像看上去那么灵活,因为唯一允许的格式化程序是
%lf

Christoph建议如何重新格式化数据。您可以使用awk执行此操作:

awk -F'[(),]' '{$1=$1}1' test.data > new.data
这将获取原始数据并将其拆分为括号和逗号
$1=$1
强制awk接触数据,因此行的格式会改变。结尾的
1
只是告诉awk打印行的速记

然后,您的输出变成:

 X     Y       Yhigh   Ylow   
 8 12181.0375 13198.4 11630.5 
 16 6096.362708 6500.86 4660.34 
 32 3086.159688 3282.08 2607.13 
 64 1668.613958 1963.03 1106.13 
 128 795.7439583 3929.95 554.027 
 192 486.0394774 614.181 362.243 
您的输入实际上可以在gnuplot中使用相同的方法进行更改:

plot "<awk -F'[(),]' '{$1=$1}1' test.data" every ::1

我想也许我的问题让人困惑。这不是关于重新格式化数据集,而是问如何绘制具有相同x轴值的多组数据

我最终按照我提出的一个答案解决了我的问题。格式数据:

#X  Y1  Y1_high Y1_low  Y2 Y2_high Y2_low  Y3 Y3_high Y3_low
然后,我能够绘制线及其相关的误差条,如下所示:

plot "mydata.dat" using 1:2 with lines, "mydata.dat" using 1:2:3:4 with error bars,\
"mydata.dat" using 1:5 with lines, "mydata.dat" using 1:5:6:7 with error bars
[Y3值的etc]

plot "mydata.dat" using 1:2 with lines, "mydata.dat" using 1:2:3:4 with error bars,\
"mydata.dat" using 1:5 with lines, "mydata.dat" using 1:5:6:7 with error bars