Содержание


Построение научных и инженерных графиков с помощью GnuPlot

Часть 4. Построение столбчатых диаграмм с помощью GnuPlot

Comments

Серия контента:

Этот контент является частью # из серии # статей: Построение научных и инженерных графиков с помощью GnuPlot

Следите за выходом новых статей этой серии.

Этот контент является частью серии:Построение научных и инженерных графиков с помощью GnuPlot

Следите за выходом новых статей этой серии.

Часто возникает потребность строить столбчатые диаграммы (гистограммы). В Gnuplot можно создавать несколько типов таких диаграмм: простые, в виде прямоугольников (boxes), гистограммы (histograms), с накоплением (stacked) и несколько наборов гистограмм на одном поле (newhistograms). Отличительной особенностью Gnuplot является ее нетребовательность к ресурсам, возможность работы в терминале на сервере под управлением Linux с реализацией конвееров передачи данных. Ниже будут рассмотрены примеры применения программы для построения отчетов в системе управления электронной очередью в детском саду. Входные данные для построения записаны в файле test.txt:

Листинг 1. Файл test.txt – данные для построения диаграмм
1	25	0	10 
2	25	0	3 
3	25	2	6 
4	25	5	10 
5	25	5	16 
6	25	4	24 
7	25	6	28 
8	25	6	19 
9	25	5	18 
10	25	5	20 
11	25	5	21 
12	25	5	21

Данные представляют собой фактическое состояние очереди в детский сад в один из учетных годов. В 1-м столбце – номера месяцев, во 2-м – плановое (максимальное) количество детей, в 3-ем – количество детей, имеющих льготы, в 4-м – поступающих на общих основаниях.

Построение простых столбчатых диаграмм (boxers)

Самые простые столбчатые диаграммы называются boxers (ящики). Это просто прямоугольник. Для его рисования используются координаты X и Y. Прямоугольник рисуется симметрично относительно X и высота его равна Y. В листинге 2 приведена программа для построения простых столбчатых диаграмм.

Листинг 2. Программа для построения простых столбчатых диаграмм
set terminal png font "Verdana,8" size 500, 400 
set output 'fig1.png'		# установка вывода 
set ylabel "Колличество заявок" 
set grid ytics 
set yrange [0:35] 
set xrange [-1:12] 
set xtics ("" 0,"янв" 1, "февр" 2, "март" 3, "апр" 4, "май" 5, "июнь" 6, "июль" 7, 
"авг" 8, "сент" 9, "окт" 10, "ноябрь" 11, "дек" 12) 
set style data boxes 
set boxwidth 0.6 absolute 
set style fill solid 1 
set xtic rotate by 45 scale 0 offset character -6,-2 
plot 'test.txt' u 4 ti "Общих"
  • set xtics ("" 0,"янв" 1, "февр" 2 … заменяет цифры на оси Х на сокращенные названия месяцев;
  • set grid ytics рисует координатную сетку по оси Y;
  • set yrange и set xrange задают диапазон значений для оси Y и Х соответственно;
  • set style data boxes устанавливает тип графика: столбчатые диаграммы (boxes);
  • set boxwidth 0.6 absolute указывает ширину столбца в долях от максимальной. По умолчанию установлено в 1, в результате ширина столбцов в диаграмме такова, что они соприкасаются. Вводя число меньше 1 можно дробиться уменьшения ширины столбцов и изменения внешнего вида диаграммы;
  • set style fill solid 1 устанавливает стиль шриховки, в данном случае сплошная заливка цветом. Типы шриховки и много другой полезной информации можно посмотреть по команде:
    $gnuplot
    >set terminal png
    >set output "test.png" 
    > exit

    В результате в файле test.png будет таблица с возможностями терминала png.

  • set xtic rotate by 45 scale 0 offset character -6,-2 отвечает за размещение надписей по оси Х, они поворачиваются на 45 градусов, масштабирование не выполняется (0), смещаются по оси Х влево на 6 единиц, по Y вниз на 2, чтобы оказаться под столбцами.

На рисунке 1 приведен пример столбчатых диаграмм (boxes).

Рисунок 1. Построение столбчатых диаграмм (boxes)
Рисунок 1. Построение столбчатых диаграмм (boxes)
Рисунок 1. Построение столбчатых диаграмм (boxes)

Данное средство подходит для построения самых простых графиков, когда по оси Y откладывается только одна величина. Если необходимо построить несколько «ящиков», например командой

plot 'test.txt' u 4 ti "Льготные", '' u 4 ti "Общие", '' u ($2-$3-$4) ti "Свободно"

то они все будут построенны в одном месте и наложатся друг на друга. Можно видеть только последний и части предыдущих, если они были выше.

Построение столбчатых диаграмм с группировкой (histograms)

Если необходимо построить несколько рядов данных, относящихся к одному делению оси Х (например к одной дате), можно использовать тип столбчатых диаграмм – гистограммы (histograms). Для построения используется одна координата X и несколько Y {Y1,Y2, …. Yi}. Cтроится столбец высотой Y1, рядом с ним высотой Y2, далее Y3 и т. д., вся группа центруется относительно X. В листинге 3 приведена программа для построения столбчатых диаграмм с группировкой.

Листинг 3. Программа для построения столбчатых диаграмм с группировкой
set terminal png font "Verdana,8" size 500, 400 
set output 'fig2.png'		# установка вывода 
set ylabel "Количество заявок" 
set grid ytics 
set yrange [0:35] 
set xrange [-1:12] 
set xtics ("" 0,"янв" 1, "февр" 2, "март" 3, "апр" 4, "май" 5, "июнь" 6, "июль" 7, 
"авг" 8, "сент" 9, "окт" 10, "ноябрь" 11, "дек" 12) 
set style data histograms 
set boxwidth 1 
set style fill solid 1 
set xtic rotate by 45 scale 0 offset character -6,-2 
plot 'test.txt' u 3 ti "Льготные", '' u 4 ti "Общие", '' u ($2-$3-$4) ti "Свободно"
  • set style data histograms определяет тип графика – гистограмма.

Результат выполенения программи показан на рисунке 2.

Рисунок 2. Построение столбчатых диаграмм (histograms)
Рисунок 2. Построение столбчатых диаграмм (histograms)
Рисунок 2. Построение столбчатых диаграмм (histograms)

Построение столбчатой диаграммы с накоплением

Диаграммы с накоплением предназначены для экономии места на графике и представления максимального количествава данных. Для построения используется одна координата X и несколько Y {Y1,Y2, …. Yi}. Центрируясь относительно X, строится столбец высотой Y1, далее к нему сверху добавляются столбец высотой Y2, далее Y3 и т. д. Суммарная высота столбцов равна Y1+Y2+...Yi. Столбцы выделяются разными цветами (по умолчанию) и/или различным типом штриховки. Программа для построения столбчатой диаграммы с накоплением показана в листинге 4.

Листинг 4. Программа для построения столбчатой диаграммы с накоплением
set terminal png font "Verdana,8" size 500, 400 
set output 'fig3.png'		# установка вывода 
set ylabel "Количество заявок" 
set grid ytics 
set yrange [0:35] 
set xrange [-1:12] 
set xtics ("" 0,"янв" 1, "февр" 2, "март" 3, "апр" 4, "май" 5, "июнь" 6, "июль" 7, 
"авг" 8, "сент" 9, "окт" 10, "ноябрь" 11, "дек" 12) 
set style data histograms 
set style histogram rowstacked 
set boxwidth 0.6 absolute 
set style fill solid 1 
set xtic rotate by 45 scale 0 offset character -6,-2 
plot 'test.txt' u 3 ti "Льготные", '' u 4 ti "Общие", '' u ($2-$3-$4) ti "Свободно"
  • set style histogram rowstacked определяет тип гистограммы: гистограмма с накоплением, данные накапливаются по строкам (row). Возможно применить аргумент columnstacked, в результате накопление будет проводится по столбцам.

Результат выполнения программы видно на рисунке 3.

Рисунок 3. Построение столбчатых диаграмм с накоплением
Рисунок 3. Построение столбчатых диаграмм с накоплением
Рисунок 3. Построение столбчатых диаграмм с накоплением

Построение нескольких наборов гистограмм на одном поле координат

Такие диаграммы схожи по внешнему виду с уже рассмотренными гистограммами, но применяются, если необходимо на поле графика разместить больше, чем один набор гистограмм. Их можно использовать для объединения в тематические группы, как в нашем примере: Льготные, Общие, Свободно. Для построения используется фактически только величина Y (высота) и порядок следования записи (откладывается по Х). Сначала выполняется построение аналогично обычным гистограммам, далее автоматически делается промежуток и строится следующая группа гистограмм и т. д. С помощью аргумента at можно разместить группы в конкретном, фиксированном месте оси Х. Построение гистограмм с дополнительной группировкой приведено в листинге 5.

Листинг 5. Построение гистограмм с дополнительной группировкой
set terminal png font "Verdana,9" size 500, 400 
set output 'image_04.png' 
set ylabel "Количество заявок" 
set grid ytics 
set yrange [0:30] 
set xrange [0:44] 
set style data histograms 
set style fill solid 1 
plot newhistogram "Льготные", 'test.txt' u 3 ti "Льготные", \ 
       newhistogram "Общие", '' u 4 ti "Общие", \ 
       newhistogram "Свободно" at 30, '' u ($2-$3-$4) ti "Свободно"
  • plot newhistogram "Льготные", 'test.txt' u 3 ti "Льготные" – выполняет построение группы гистограмм с общим названием «Льготные»;
  • at 30 аргумент, указывающий, что группу необходимо разместить, начиная с отметки 30 по оси ОХ.

Недостатком является то, что по оси ОХ не откладываются данные, на ней фактически нанесены номера столбцов. В случае необходимости надписи по ОХ можно заменить командой xtic, аналогично рассмотренной ранее.

Результат выполнения программы видно на рисунке 4.

Рисунок 4. Построение гистограмм с дополнительной группировкой.
Рисунок 4. Построение гистограмм с дополнительной группировкой.
Рисунок 4. Построение гистограмм с дополнительной группировкой.

Заключение

В статье были рассмотрены различные виды столбчатых диаграмм, доступных для построения в программе GnuPlot:

  • простые (boxer) – наиболее наглядные, хорошо использовать для отображения однотипных данных, распределенных во времени;
  • с группировкой (histograms) – отлично подходят для группы разных данных, относящихся к одному промежутку времени;
  • с накоплением – с их помощью хорошо отображать величины, являющиеся суммой других величин, и визуально определять вклад каждой;
  • с дополнительной группировкой – на одном поле данных можно строить несколько групп диаграмм для визуального определения взаимосвязи между ними.

Ресурсы для скачивания


Похожие темы


Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, Open source
ArticleID=859908
ArticleTitle=Построение научных и инженерных графиков с помощью GnuPlot: Часть 4. Построение столбчатых диаграмм с помощью GnuPlot
publish-date=02282013