我有一个类似于下面的数据文件(共有10行):
onClick={() => this.props.actions.setResultMenu(x)}
export const setResultMenu = (index) => ({
type: SET_RESULT_MENU,
index
});
每行对应于数据集上3个方法的结果,其中前两个值用于第一个方法,后两个用于第二个方法,最后两个用于最后一个方法。我想生成堆积条形图,例如
对于每个数据集,将有3个条形,每个条形对应一个方法;
对于每种方法,其条形图分为两部分,其中底部(分别为顶部)代表第一个(相应的第二个)值;
方法栏的颜色与其他方法的颜色不同。
更具体地说,我想要一个像link这样的图表(对不起,我没有足够的声誉来展示这里的图片。)
如何使用GNUPlot实现这一目标?
答案 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
行绘制每个柱的底部值,第二个线绘制顶部值。