使用GNUPlot生成堆积条形图

时间:2016-10-15 12:23:54

标签: gnuplot data-visualization

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

onClick={() => this.props.actions.setResultMenu(x)}


export const setResultMenu = (index) => ({
    type: SET_RESULT_MENU,
    index
});

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

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

  • 对于每种方法,其条形图分为两部分,其中底部(分别为顶部)代表第一个(相应的第二个)值;

  • 方法栏的颜色与其他方法的颜色不同。

更具体地说,我想要一个像link这样的图表(对不起,我没有足够的声誉来展示这里的图片。)

如何使用GNUPlot实现这一目标?

1 个答案:

答案 0 :(得分:0)

此任务对于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)))

set for在每行的中心栏上手动添加标签。

第一个plot行绘制每个柱的底部值,第二个线绘制顶部值。

enter image description here