我是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"
这产生了一个如下图:。
但是我无法在第5列中使用偏差值在每个条形图的顶部获取错误栏。我尝试使用rowstacked和errorbar样式的条形图,但没有运气。
答案 0 :(得分:1)
为此,您必须知道,使用histogram
样式时,框位于x位置0
,1
等,即行号。
因此对于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的结果是:
为方便起见,我使用了宏scale
。这些宏的工作方式如下:您可以在上面的脚本中定义一个字符串,如scale = '...'
。这可以在以后的任何表达式中用作@scale
(您必须启用set macros
)。然后在执行相应命令之前替换scale
字符串的内容。