使用GNUPlot生成堆叠条形图

使用GNUPlot生成堆叠条形图,gnuplot,data-visualization,Gnuplot,Data Visualization,我有一个类似于下面的数据文件(共有10行): 每行对应于数据集上3种方法的结果,其中前两个值用于第一种方法,后两个值用于第二种方法,最后两个值用于最后一种方法。我想生成一个堆叠的条形图,这样 对于每个数据集,将有3个条,每个条对应一个方法 对于每种方法,其条被分成两部分,其中底部(分别为顶部)表示第一个(分别为第二个)值 一种方法的条形图的颜色与另一种方法的不同 更具体地说,我想要一个类似(对不起,我没有足够的声誉在这里显示图片)的图表 如何使用GNUPlot实现这一点?这个任务对于GNUP

我有一个类似于下面的数据文件(共有10行):

每行对应于数据集上3种方法的结果,其中前两个值用于第一种方法,后两个值用于第二种方法,最后两个值用于最后一种方法。我想生成一个堆叠的条形图,这样

  • 对于每个数据集,将有3个条,每个条对应一个方法

  • 对于每种方法,其条被分成两部分,其中底部(分别为顶部)表示第一个(分别为第二个)值

  • 一种方法的条形图的颜色与另一种方法的不同

更具体地说,我想要一个类似(对不起,我没有足够的声誉在这里显示图片)的图表


如何使用GNUPlot实现这一点?

这个任务对于GNUPlot的直方图来说有点太复杂了,因为您将集群和堆栈结合起来。我认为,对于您来说,使用
boxxy
样式手动绘制每个长方体零件是最合适的:

unset key
set xtics 1,4
set for [i=0:9] xtics add (sprintf("data %d", i + 1) i*4 + 1)
set style fill solid noborder
set style data boxxy
set autoscale xfix

set linetype 1 lc rgb "#9400D3"
set linetype 2 lc rgb "#009E73"
set linetype 3 lc rgb "#56B4E9"
set linetype 4 lc rgb "#B46AD3"
set linetype 5 lc rgb "#64C4AA"
set linetype 6 lc rgb "#8BC8EC"

plot for [i=0:2] "file.dat" u ($0 * 4 + i):(0.5*column(2*i + 1)):(0.5):(0.5*column(2*i+1)),\
     for [i=0:2] "file.dat" u ($0 * 4 + i):(0.5*column(2*(i+1)) + column(2*i + 1)):(0.5):(0.5*column(2*(i+1)))
为设置的
在每行的中心栏上手动添加标签

第一行绘制每个条形图的底部值,第二行绘制顶部值


谢谢。对不起,我不能给你投票,因为我没有足够的声誉。@addddc:我是为你做的。相关:
unset key
set xtics 1,4
set for [i=0:9] xtics add (sprintf("data %d", i + 1) i*4 + 1)
set style fill solid noborder
set style data boxxy
set autoscale xfix

set linetype 1 lc rgb "#9400D3"
set linetype 2 lc rgb "#009E73"
set linetype 3 lc rgb "#56B4E9"
set linetype 4 lc rgb "#B46AD3"
set linetype 5 lc rgb "#64C4AA"
set linetype 6 lc rgb "#8BC8EC"

plot for [i=0:2] "file.dat" u ($0 * 4 + i):(0.5*column(2*i + 1)):(0.5):(0.5*column(2*i+1)),\
     for [i=0:2] "file.dat" u ($0 * 4 + i):(0.5*column(2*(i+1)) + column(2*i + 1)):(0.5):(0.5*column(2*(i+1)))