Как нарисовать высотный график при помощи gnuplot: различия между версиями
Филасаф (обсуждение | вклад) мНет описания правки |
мНет описания правки |
||
Строка 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 (не забыв при этом добавить привилегии на исполнение), получим график, который и нарисован в начале статьи.
Надеюсь кому-нибудь да пригодиться.