【问题标题】:Generate stacked bar diagram using GNUPlot使用 GNUPlot 生成堆积条形图
【发布时间】:2016-10-15 12:23:53
【问题描述】:

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

1.5  1.6  3.0  4.0  1.2  1.3
1.7  1.1  2.6  3.4  1.5  1.6
......

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

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

  • 对于每个方法,它的条被分成两个,其中底部(分别是顶部)一个代表第一个(分别是第二个)值;

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

更具体地说,我想要一个类似link 的图表(抱歉,我没有足够的声望在这里展示图片。)

如何使用 GNUPlot 实现这一点?

【问题讨论】:

标签: gnuplot data-visualization


【解决方案1】:

这个任务对于 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 绘制每个条形的底部值,第二行绘制顶部值。

【讨论】:

  • 谢谢。抱歉,由于我没有足够的声望,我不能给你投票。
  • @addddddc :我为你做了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-20
  • 2017-02-26
  • 2017-11-02
相关资源
最近更新 更多