Неправильная позиция и размер процентов в Gnu Plot - PullRequest
2 голосов
/ 13 мая 2019

Я разработал CGI в bash / html, который позволяет мне создавать график моих кластеров.

Вот пример: enter image description here

Этоэто график, который хорошо работает.Проблема в том, что для некоторых графиков проценты перекрываются или смещаются слишком далеко от того места, где они должны быть.Вот мой код GNUPLOT:

f(w) = (strlen(w) > 10 ? word(w, 1) . "\n" . word(w, 2) : w)

set title "TITLE"
set terminal png truecolor size 960, 720 background rgb "#eff1f0"
set output "/var/www/html/CLUSTER_NAME.png"
set bmargin at screen 0.1
set key top center
set grid
set style data histograms
set style fill solid 1.00 border -1
set boxwidth 0.7 relative
set yrange [*:*]
set format y "%g%%"
set datafile separator ","
plot 'test1.txt' using 2:xtic(f(stringcolumn(1))) title " CPU consumption (%) ", \
'' using 3 title " RAM consumption (%)", \
'' using 0:($2+1):(sprintf(" %g%%",$2)) with labels notitle, \
'' using 0:($3+1):(sprintf("     %g%%",$3)) with labels notitle

Вот пример графика, который не работает должным образом, потому что проценты слишком смещены:

enter image description here

Я могу изменить это, изменив эту строку в моем коде:

'' using 0:($3+1):(sprintf(" %g%%",$3)) with labels notitle

Кому:

'' using 0:($3+1):(sprintf("                               %g%%",$3)) with labels notitle

Добавление пробелов позволяет смещать проценты:

enter image description here

Но даже если он работает для этого графика, он перемещает проценты и для других графиков ...:

enter image description here

Я не могу получить "чистую" графику.Либо проценты перекрываются, либо выходят за рамки, поскольку значения слишком велики, или они полностью смещены ....

Другой пример: enter image description here

Есть ли способ заставить все это двигаться самостоятельно, в соответствии со значениями и, следовательно, размером столбцов и т. Д.?

1 Ответ

0 голосов
/ 14 мая 2019

Вы можете попробовать альтернативный механизм, используя plot for [i=2:3] ... для циклического прохождения 2 столбцов значений.Вместо того, чтобы угадать количество пробелов для отступа, вы оцениваете положение x бара, используя column(0)+(i-2)*.25 (для i = 2, а затем 3), что я получил методом проб и ошибок.

Например, используяфункция mytitle, чтобы получить 2 заголовка (мой gnuplot слишком стар для массива):

mytitle(x) = (x==2?"cpu":"ram")
plot for [i=2:3] 'data' using i:xtic(stringcolumn(1)) title mytitle(i), \
     for [i=2:3] '' using (column(0)+(i-2)*.25):(column(i)+1):\
      (sprintf("%g%%",column(i))) with labels notitle

plots

...