yesteraday我提出了类似的问题(this one)。我无法在gnuplot直方图中显示条形顶部的值。我失去了很多时间,因为我找不到关于它的真正好的文档,我只能在不同的网站上找到类似的问题。
我失去了很多时间但幸运的是有人给了我解决方案。现在我有一个类似的问题,直方图有两个条形图,其中我必须在两个条形图上面加上它的值。我很接近,或者这就是我的想法,但我不能让它正常工作。我正在更改脚本并多次重新生成图形,但我不确定我在做什么。
script.sh
#!/usr/bin/gnuplot
set term postscript
set terminal pngcairo nocrop enhanced size 600,400 font "Siemens Sans,8"
set termoption dash
set output salida
set boxwidth 0.8 absolute
set border 1
set style fill solid 1.00 border lt -1
set key off
set style histogram clustered gap 1 title textcolor lt -1
set datafile missing '-'
set style data histograms
set xtics border in scale 0,0 nomirror autojustify
set xtics norangelimit
set xtics ()
unset ytics
set title titulo font 'Siemens Sans-Bold,20'
set yrange [0.0000 : limite1] noreverse nowriteback
set y2range [0.0000 : limite2] noreverse nowriteback
show style line
set style line 1 lt 1 lc rgb color1 lw 1
set style line 2 lt 1 lc rgb color2 lw 1
## Last datafile plotted: "immigration.dat"
plot fuente using 2:xtic(1) ls 1 ti col axis x1y1, '' u 3 ls 2 ti col axis x1y2, '' u 0:2:2 with labels offset -3,1 , '' u 0:2:3 with labels offset 3,1
我正在修改最后一个代码行,因为我在这里设置标签。我已经能够显示两个标签,但在不好的位置,我也能够在正确的位置显示其中一个标签,但没有显示另一个标签。除了我想要的东西之外,我几乎可以展示所有东西。这是生成脚本的图表。
output.png
这是我用于生成图表的源文件
source.dat
"Momento" "Torre 1" "Torre 2"
"May-16" 1500.8 787.8
"Jun-16" 1462.3 764.1
"Jul-16" 1311.2 615.4
"Ago-16" 1199.0 562.0
"Sep-16" 1480.0 713.8
"Oct-16" 1435.1 707.8
这是我用参数集
执行的命令gnuplot -e "titulo='Energía consumida por torre (MWh)'; salida='output.png'; fuente='source.dat'; color1='#FF420E'; color2='#3465A4'; limite1='1800.96'; limite2='945.36'" script.sh
我认为我假装的很明显,有人可以帮助我吗?
提前多多感谢。
答案 0 :(得分:4)
您的脚本有几个问题,缺少的ti col
只是其中之一。 (您也可以使用set key auto columnheader
,然后每次都不得提供该选项。
如果您想比较这些值,请不要同时使用y1
和y2
轴!否则正确的酒吧高度只是运气问题......
了解gnuplot如何定位直方图条,然后您可以准确定位每个条的顶部中心。如果您只使用带有offset
值的char
(只提供数字时就是这种情况),那么只要添加或删除数据行,您的脚本就会中断。
直方图簇从x位置0
开始,并以x的整数值为中心。由于每个群集中有两个条形,间隙为1,因此第一个条形图的中心位于($0 - 1/6.0)
(= 1/(2 * (numberOfTorres + gapCount))
),第二个条形图的中心位于($0 + 1/6.0)
:
set terminal pngcairo nocrop enhanced size 600,400 font ",8"
set output 'output.png'
set title 'Energía consumida por torre (MWh)' font ",20"
set boxwidth 0.8 absolute
set border 1
set style fill solid 1.00 border lt -1
set style histogram clustered gap 1 title textcolor lt -1
set style data histograms
set xtics border scale 1,0 nomirror autojustify norangelimit
unset ytics
set key off auto columnheader
set yrange [0:*]
set offset 0,0,graph 0.05,0
set linetype 1 lc rgb '#FF420E'
set linetype 2 lc rgb '#3465A4'
# dx = 1/(2 * (numberOfTorres + gap))
dx = 1/6.0
plot 'source.dat' using 2:xtic(1),\
'' u 3,\
'' u ($0 - dx):2:2 with labels,\
'' u ($0 + dx):3:3 with labels
现在,从酒吧中心开始,您可以安全地使用offset
来指定相对于酒吧顶部中心的偏移量:
plot 'source.dat' using 2:xtic(1),\
'' u 3,\
'' u ($0 - dx):2:2 with labels offset -1,1 ,\
'' u ($0 + dx):3:3 with labels offset 1,1
第二种选择是使用标签的对齐方式:红色条的标签在条形右边框右对齐,蓝条的标签在条形左边框左对齐:
absoluteBoxwidth = 0.8
dx = 1/6.0 * (1 - absoluteBoxwidth)/2.0
plot 'source.dat' using 2:xtic(1),\
'' u 3,\
'' u ($0 - dx):2:2 with labels right offset 0,1 ,\
'' u ($0 + dx):3:3 with labels left offset 0,1
在任何情况下,这两个选项都可以使您的脚本对输入数据的更改更加健壮。
答案 1 :(得分:1)
plot fuente using 3:xtic(1) ls 1 ti col axis x1y1, '' u 3 ls 2 ti col axis x1y2, '' u ($0-1):3:3 with labels offset -3,1 , '' u ($0-1):2:2 with labels offset 3,1
您有2个绘图命令:仅显示第一个。 此外,script.sh应该是一个bash脚本。这是一个gnuplot脚本,因此它应该有另一个扩展名。
答案 2 :(得分:1)