具有多个数据集和高/低错误条的gnuplot数据文件
我以前没有使用过gnu绘图,但在谷歌搜索之后,我似乎不知道如何格式化我的数据文件 我有多个数据集,每个数据集都有自己的Yhigh和Ylow值。我希望将这3个数据集绘制在同一个图表上具有多个数据集和高/低错误条的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
#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