gnuplot:带有错误栏的行堆积条形图

时间:2014-03-21 02:16:39

标签: plot gnuplot histogram bar-chart

我是gnuplot的新手。我想从具有三个组件和标准偏差的数据点生成图形。 我的数据如下:

TYPE1   15  20  65  5
TYPE2   20  20  60  4
TYPE3   10  30  60  6
TYPE4   30  30  40  5

我想为每个TYPE绘制一个rowstacked bar,其中堆叠了3个组件,顶部是errobar。 我编写了以下脚本来执行此操作:

set terminal png
set output "sample.png"
set boxwidth 0.75 relative
set style fill   pattern 0 border
set style histogram rowstacked
set style data histograms
set xtics 1000 nomirror
set ytics 100 nomirror
set noytics
set mxtics 2
set mytics 2
set ytics 100
set yrange [0:150]
set ylabel "Y"
set xlabel "X"
set title "Sample graph"
plot 'data.dat' using (100*column(2)/(column(2)+column(3)+column(4))) t "A" , '' using (100*column(3)/(column(2)+column(3)+column(4))) t "B" , '' using (100*column(4)/(column(2)+column(3)+column(4))):xtic(1) t "C" 

这产生了一个如下图:Click Here

但是我无法在第5列中使用偏差值在每个条形图的顶部获取错误栏。我尝试使用rowstacked和errorbar样式的条形图,但没有运气。

1 个答案:

答案 0 :(得分:1)

为此,您必须知道,使用histogram样式时,框位于x位置01等,即行号。

因此对于errorbars,您必须使用column(0)作为x坐标:

set terminal pngcairo
set output "sample.png"

set boxwidth 0.75 relative
set style fill pattern 0 border
set style histogram rowstacked
set style data histograms

set yrange [0:150]

set macros
scale = '100/(column(2)+column(3)+column(4))'

set bars 2.0
plot 'data.dat' using ($2 * @scale):xtic(1) t "A" , \
     '' using ($3 * @scale) t "B" , \
     '' using ($4 * @scale) t "C",\
     '' using 0:(100):5 with errorbars notitle lw 2 lt -1

4.6.3的结果是:

enter image description here

为方便起见,我使用了宏scale。这些宏的工作方式如下:您可以在上面的脚本中定义一个字符串,如scale = '...'。这可以在以后的任何表达式中用作@scale(您必须启用set macros)。然后在执行相应命令之前替换scale字符串的内容。