Горизонтальная гистограмма в gnuplot - PullRequest
0 голосов
/ 11 июля 2020

При поиске в Google «горизонтальной гистограммы gnuplot» первый результат, который я смог найти http://www.phyast.pitt.edu/~zov1/gnuplot/html/histogram.html, предполагает поворот (!) Последней гистограммы, что кажется довольно странным. Тем не менее, я попробовал этот подход, но метки обрезаны.

первая попытка построения горизонтальной гистограммы в gnuplot 5.2

reset
$heights << EOD
dad                     181
mom                     170
son                     100
daughter        60
EOD

set yrange [0:*]      # start at zero, find max from the data
set boxwidth 0.5      # use a fixed width for boxes
unset key             # turn off all titles
set style fill solid  # solid color boxes

set colors podo

set xtic rotate by 90 scale 0
unset ytics
set y2tics rotate by 90

plot '$heights' using 0:2:($0+1):xtic(1) with boxes lc variable

Есть ли лучший подход?

1 Ответ

3 голосов
/ 12 июля 2020

Ссылка, на которую вы ссылаетесь, взята из прибл. 2009. С тех пор gnuplot развивается. Как предложил @Christoph, отметьте help boxxyerror.

Код:

### horizontal bar graph
reset session

$Data << EOD
dad         181
mom         170
son         100
daughter     60
EOD

set yrange [0:*]      # start at zero, find max from the data
set style fill solid  # solid color boxes
unset key             # turn off all titles

myBoxWidth = 0.8
set offsets 0,0,0.5-myBoxWidth/2.,0.5

plot $Data using 2:0:(0):2:($0-myBoxWidth/2.):($0+myBoxWidth/2.):($0+1):ytic(1) with boxxyerror lc var
### end of code

Результат:

введите описание изображения здесь

Дополнение:

что означает 2:0:(0):2:($0-myBoxWidth/2.):($0+myBoxWidth/2.):($0+1):ytic(1)?

Ну, это выглядит сложнее, чем это является. Проверить help boxxyerror. Из руководства:

6 столбцов: x y xlow xhigh ylow yhigh

Итого:

  1. x принимает значение из столбца 2, но не так актуально здесь, поскольку мы будем использовать поле xyerror
  2. y взять псевдостолбец 0, который является номером строки, начинающимся с нуля, отметьте help pseudocolumns, но здесь также не так важно
  3. xlow (0) означает фиксированное нулевое значение
  4. xhigh значение из столбца 2
  5. ylow ($0-myBoxWidth/2.), номер строки минус половина ширины поля
  6. yhigh ($0+myBoxWidth/2.), номер строки плюс половина ширины окна
  7. ($0+1) вместе с ... lc var: цвет в зависимости от номера строки, начиная с 1
  8. ytic(1): столбец 1 как yti c label

По какой-то причине (которой я не знаю) gnuplot, похоже, все еще не имеет удобного стиля построения горизонтальной гистограммы, но, по крайней мере, он предлагает этот boxxyerror обходной путь.

...