Как нарисовать высотный график при помощи gnuplot: различия между версиями
мНет описания правки |
мНет описания правки |
||
| (не показаны 2 промежуточные версии 2 участников) | |||
| Строка 1: | Строка 1: | ||
[[Категория: | [[Категория:Картография]] | ||
[[File:Scherakov_alt_plot_simple.png|800px|center]] | [[File:Scherakov_alt_plot_simple.png|800px|center]] | ||
Текущая версия от 11:58, 16 октября 2015

Захотелось мне всё же нарисовать красивый, понятный высотный график. Выбрал я для этого свободную, но очень мощную утилиту gnuplot. Кратко - эта штука может генерировать практически любые графики, диаграмки, визуализации. Возможностей не счесть, но если кому интересно демонстрационные картинки возможностей gnuplot можно посмотреть тут.
Так как в интернете достаточно много публикаций на тему как работает gnuplot, я выложу тут только файлы с коментариями. Подразумевается, что читатель имеет минимальные представления о работе в командной строке.
Для начала надо задать карту высот. На листинге ниже представлена карта высот для графика, который нарисован в начале статьи. Первая колонка отвечает за высоту, вторая за время. Третья и четвёртая колонки используются, чтобы отметить на графике ночёвки (синие квадратики) и локальные препятствия (красные крестики). Первая колонка отвечает за ось Y, остальные за ось X.
# высота дни ночёвки препятствия название 2425 0 - - - 3750 1 1 1 пер.Шибе 4404 1.5 - 1.5 пик.Акклиматизационный 4404 2 2 - - 3489 2.5 - - - 3489 3 3 - - 4650 3.5 - 3.5 пер.Дальний 4250 4 4 - - 5050 4.5 - 4.5 пер.Ташмачет 5150 4.6 - 4.6 - # пик Купол зададим из скрипта 4550 5 5 - -
Сохраняем такой файл, например как "alt.txt".
Далее необходимо написать скрипт, который и будет строить график:
#! /usr/bin/gnuplot -persist
set terminal png size 800, 600
set terminal png
set output "alt.png"
set grid # частота сетки
set ytics 500
set xtics 1
# возможные значения времени и высоты
set xrange [0:5]
set yrange [2200:6000]
# подписи к осям
set xlabel "Дни похода"
set ylabel "Высота, м"
# устанавливаем стили
set style line 1 lt 2 lw 3 # зелёная линия
set style line 2 lt 2 lw 2 ps 1 linecolor rgb "red" # крестики локальный препятствий
set style line 3 lt 5 lw 1 ps 1 linecolor rgb "blue" # квадратики ночёвок
set label 5 "п.Купол" at 4.6,5150 rotate by 85 font "Helvetica,10" # хотим по-особенному обозначить "Купол" (размер шрифта уменьшен и изменено вращение)
# Собственно рисуем графики:
# - основной график
# - подписи к локальным препятствиям
# - локальные препятствия
plot "alt.txt" using 2:1 notitle with line linestyle 1, \
"alt.txt" using 2:1:5 notitle with labels left rotate by 90 font "Helvetica,14", \
"alt.txt" using 3:1 notitle with points linestyle 3, \
"alt.txt" using 4:1 notitle with points linestyle 2
Сохранив этот скрипт, например, как "alt.sh" и исполнив ./alt.sh (не забыв при этом добавить привилегии на исполнение), получим график, который и нарисован в начале статьи.
Надеюсь кому-нибудь да пригодиться.