Graph gnuplot从文件中绘制多个数据集,并将所有这些条分组

Graph gnuplot从文件中绘制多个数据集,并将所有这些条分组,graph,plot,gnuplot,Graph,Plot,Gnuplot,我想为文件中的每个数据集绘制第3列和第4列,数据集由多个换行符标识,并使用索引引用,如下面的脚本所示。我可以用“linespoint”绘制这些数据。我的图表看起来像。但是我想用“盒子”来绘制数据 x轴将有第3列(1,2,3),y轴将有第4列,对于x(1,2,3)的每一个值,应有两个条,一个来自索引0,另一个来自索引1 数据文件如下所示: 2-100 2 100 1 3.10 249 2 100 2 3.41 250 2 100 4 3.70 249 3-100 3 100 1 3.10 25

我想为文件中的每个数据集绘制第3列和第4列,数据集由多个换行符标识,并使用索引引用,如下面的脚本所示。我可以用“linespoint”绘制这些数据。我的图表看起来像。但是我想用“盒子”来绘制数据

x轴将有第3列(1,2,3),y轴将有第4列,对于x(1,2,3)的每一个值,应有两个条,一个来自索引0,另一个来自索引1

数据文件如下所示:

2-100
2 100 1 3.10 249
2 100 2 3.41 250
2 100 4 3.70 249


3-100
3 100 1 3.10 252
3 100 2 3.48 252
3 100 4 3.72 254
2-100

210013.10249

210023.41250

210043.70249

3-100

310013.10252

310023.48252

310043.72254

2-100和3-100将用作标题“块的第一行和第一列”,前4行在脚本中读作“索引o”,后4行读作“索引1”

我使用的脚本:

plot \

  "$1" index 0 using 3:4 with boxes fs solid title columnhead(1),\

  "$1" index 1 using 3:4 with boxes fs solid title columnhead(1)

我重新格式化了您的数据文件(至少,如果我正确理解了您最初的问题的话)——它现在看起来像:

2-100
2 100 1 3.10 249
2 100 2 3.41 250
2 100 4 3.70 249


3-100
3 100 1 3.10 252
3 100 2 3.48 252
3 100 4 3.72 254
您应该能够使用
sed
对数据文件进行如下格式化:

sed -e '/^$/ d'           -e '/[0-9]-100/{x;p;p;x}'               datafile.dat
#     #remove all newlines  #reinsert newlines where appropriate
(这假设列标题总是以数字(0-9)开始,然后是“-100”。如果数据文件稍微复杂一点,您可能需要更有趣一点

可以使用以下方法绘制此图:

set yrange [0:*]
set style fill solid
plot for [i=0:1] 'test2.dat' index i u ($3+i*0.25):4:(0.25) w boxes title columnhead(1)
当然,您可以打破for循环,为每个绘图或其他绘图指定特殊属性

如果需要特殊标签,可以这样做

set xtics scale 0,0 format ""
set xtics ("This is at 1" 1, "this is at 2" 2, "this is at 3" 3)
在plot命令之前

以下是我使用上述png(libgd)终端得到的结果:


我有点困惑--“数据集由多个换行符标识”,但这意味着上面的每一行都是一个新的数据集。也许这就是你的意思,但我很难理解你想要实现的目标。(我会再读一两遍,希望能弄明白)。是的,数据看起来像是您编辑的。请查看绘制时的图表()。我只需要方框,而不是()中所示的“线条点”。对于x轴(1,2,4)上的每个值我需要两个框,一个用于第一组数据,一个用于第二组数据。@user1444593--您尝试过我上面发布的gnuplot吗?它在1处创建两个框,在2处创建两个框,在4处创建两个框。数据文件的格式与我上面发布的格式相同。我还演示了如何使用
sed
重新格式化它,以匹配我上面的内容(如果不是这样的话)。是的,我绘制了你发布的内容。我的数据看起来已经像“sed”重新格式化的内容。这是我在绘制数据后得到的()@user1444593您可以将新脚本和数据文件作为问题的编辑重新发布吗?为了保留格式,您可以在每行前面插入4个空格,将内容格式化为代码。(上面发布的代码在我的机器[gnuplot 4.4,OS X]上工作,所以我想看看您有什么可能导致差异。)你有什么版本的gnuplot?什么操作系统?我正在使用Ubuntu12.04 32位,gnuplot 4.6 patchlevel 0。脚本如下:设置终端postscript eps颜色增强设置输出“$1.eps”设置Y范围[0:]设置样式填充[I=0:1]“$1”索引I u($3+I*0.25):4:(0.25)w框标题栏头(1)