Вместо использования гистограммы, вы также можете использовать with boxes
и смещать их в нужном направлении.С этим, я полагаю, легче установить метку автоматически в «хороших» позициях.Смещения указаны в символах.Я думаю, вам нужно set yrange
вручную, иначе у вас будет минимум и максимум на границе графика.
Код:
### histogram like with boxes and labels
reset session
$Data1 <<EOD
07.2018 12 9
08.2018 14 9
09.2018 13 10
10.2018 16 10
11.2018 16 10
12.2018 16 10
01.2019 15 10
02.2019 15 10
EOD
$Data2 <<EOD
July 2018, 47, 18
August 2018, 70, 19
September 2018, 36, 21
October 2018, 20, 21
November 2018, 44, 21
December 2018, 36, 21
January 2019, 30, 21
February 2019, 31, 22
EOD
set bmargin 3
set boxwidth 0.3 relative
set xdata time
set yrange [0:20]
set format y "%g%%"
Month(s) = strftime("%B\n%Y",strptime("%m.%Y",s))
set xtics offset first 0.2
plot \
$Data1 u ($0-0.2):2:xtic(Month(strcol(1))) w boxes fc rgb "red" fs solid 1.0 t "CPU consumption (%)", \
'' u ($0+0.2):3 w boxes fc rgb "green" fs solid 1.0 t "RAM consumption (%)", \
'' u ($0-0.2):2:(sprintf("%g%%",$2)) w labels center offset 0,0.7 notitle, \
'' u ($0+0.2):3:(sprintf("%g%%",$3)) w labels center offset 0,0.7 notitle
pause -1
set datafile separator ","
Month(n) = word(strcol(n),1)."\n".word(strcol(n),2)
set yrange[0:75]
plot \
$Data2 u ($0-0.2):2:xtic(Month(1)) w boxes fc rgb "red" fs solid 1.0 t "CPU consumption (%)", \
'' u ($0+0.2):3 w boxes fc rgb "green" fs solid 1.0 t "RAM consumption (%)", \
'' u ($0-0.2):2:(sprintf("%g%%",$2)) w labels center offset 0,0.7 notitle, \
'' u ($0+0.2):3:(sprintf("%g%%",$3)) w labels center offset 0,0.7 notitle
### end of code
Редактировать:
Я изменил формат $Data2
на ваш исходный формат ввода July 2018, 47, 18
.Для обработки этого формата вам необходимо добавить следующие строки перед вторым графиком (выше уже вставлено).
set datafile separator ","
Month(n) = word(strcol(n),1)."\n".word(strcol(n),2)
и изменить строку:
plot \
$Data2 u ($0-0.2):2:xtic(Month(1)) w boxes ...
Результат: