如何在gnuplot中的条形图上方获取标签

时间:2015-05-21 12:26:11

标签: gnuplot

我想要一个条形图顶部的条形图,显示一组条形图,有错误,条形图上方的标签表示该条形图与第一条条形图的差异。虽然我得到了正确的定位,但它总是有点偏离。 Y似乎是正确的,即使有很大的错误,但是x位置在中间条上是绝对正确的(蓝色C),所有左边的条似乎有点太多了,而右边的所有条都有点太多了。此外,条形越多,不需要的偏移就越大。我的位置计算有错误吗?有更好的方法吗?

我使用这段代码来定位标签:

with labels center offset first (1 + (i - (configurations-1) / 2.0) / (configurations))

我发布了一个示例脚本和数据文件以及显示此处绘图的结果图:(第二个for循环结尾处的代码控制标签的位置:

情节: enter image description here

脚本test.gnuplot:

reset
set terminal png size 500,300
set autoscale
set yrange [0:]
set style data histogram
set style histogram cluster gap 1 errorbars
set style fill solid border -1
set key inside right top vertical 
set key autotitle columnheader 
set boxwidth 0.9
configurations=5
plot for[i=0:(configurations-1):1] 'test.data' using 2+i*3:2+i*3+1:2+i*3+2:xtic(1) title col, for[i=1:(configurations-1):1] '' using ($0 - 1):2+i*3+2:(gprintf("%+-.0f%%", (column(2+i*3+0)/column(2+0*3+0)-1) * 100)) with labels center offset first (1 + (i - (configurations-1) / 2.0) / (configurations)), character 0.5 notitle
quit

数据文件test.data:

"" A A A B B B C C C D D D E E E
"Foo" 5.8058873543 5.7058873543 5.9058873543 5.6901595056 5.3101595056 6.2901595056 8.09519137 8.00519137 8.10519137 7.3446561007 7.2446561007 7.4446561007 9.2118493572 9.0118493572 9.3118493572

1 个答案:

答案 0 :(得分:2)

在您的案例configurations中,框宽度以及每个框的位置由1的数量加上两个群集之间的差距大小给出。并且,不是将x位置放在offset参数中,您也可以将其移动到using语句。使用set xrange限制左侧和右侧的间隙:

set style histogram cluster gap 1 errorbars
set style fill solid border -1
set key inside right top vertical 
set key autotitle columnheader 
set boxwidth 0.9 absolute
configurations=5
set xrange [-0.5:0.7]
plot for[i=0:(configurations-1):1] 'test.data' using 2+i*3:2+i*3+1:2+i*3+2:xtic(1) title col, \
     for[i=1:(configurations-1):1] '' using ((i - (configurations-1) / 2.0) / (configurations + 1)):2+i*3+2:(gprintf("%+-.0f%%", (column(2+i*3+0)/column(2+0*3+0)-1) * 100)) with labels center offset 0, character 0.5 notitle

enter image description here