Построение научных и инженерных графиков с помощью GnuPlot: Часть 2. Настройка координатных осей, выбор цвета, типа и других атрибутов линий для построения графиков

В данной статье речь пойдет о настройках типов линий графика в программе GnuPlot, выборе цвета и толщины; о конфигурации отображения координатных осей: выбор типа оси (линейная, логарифмическая), нанесение подписи, отображение координатной сетки.

Алексей Простаков, инженер электроакустических систем, ИТ-консультант, консультант

Алексей Простаков – инженер электроакустических систем, ИТ-консультант, менеджер проектов. Более 7 использования ОС Linux в профессиональной деятельности.



15.01.2013

Введение

В первой статье этого цикла была описана программа GnuPlot и ее основные возможности, рассмотрен формат передачи данных для построения графиков, определение выходного терминала (формат вывода графиков), настройка типа и высоты шрифта. Входные данные записаны в файле 1.txt, управляющие команды записаны в файл scen.plt. В результате был построен график, но он нуждается в доработке.

Настройка типа графика

Так как программа занимается построением именно графиков, необходимо чтобы точки были соединены линиями. Gnuplot может строить линии, соединяя точки данных между собой. Можно рассмотреть множество хороших примеров построения графиков. Линии имеют много атрибутов, среди которых:

  • толщина – linewidth или lw – это целое число, толщина линии в пикселях;
  • цвет можно задавать с помощью определенной заранее константы. Посмотреть существующие цвета можно в диалоговом режиме программы:
    gnuplot
    gnuplot> show colornames

    После выполнения этой команды, программа покажет 112 имен цветов и соответствующие им цветовые константы. В таблице 1 приведены наиболее употребляемые из них.

Таблица 1. Наиболее употребляемые цвета в GnuPlot
Имя (константа)Цвет
blackчерный
purpleфиолетовый
greenзеленый
orangeоранжевый
redкрасный
yellowжелтый
blueсиний
brownкоричневый

Очень часто команды можно сокращать, например, linewidth = lw. Это полезно при работе в диалоговом режиме.

Также при построении графиков можно явно обозначить точки, через которые проходит график, с помощью команды linespoints. В файле scen.plt необходимо заменить строку с командой plot на приведенную в листинге 1.

Листинг 1. Явное обозначения точек с помощью команды linespoints
plot '1.txt'using 1:2 with linespoints lw 1 lt rgb 'purple', \ 
'1.txt'using 1:3  with linespoints lw 2 lt rgb 'red',\ 
'' u 1:4 w li lw 3

Далее необходимо запустить команду:

gnuplot "scen.plt"

На рисунке 1 приведен график с явным обозначением точек.

Рисунок 1. График с явным обозначением точек
Рисунок 1. График с явным обозначением точек

В первой строке указано, что надо построить двухмерный график (plot) по файлу данных 1.txt, используя для оси X столбец 1, для Y столбец 2 (using 1:2) с помощью линии с точками данных (linespoints) толщиной 1 пиксель (lw 1) и фиолетового цвета (lt rgb 'purple').

Команда plot работает следующим образом: она направляет построенный график в выбранный терминал, совершенно не разбираясь, что было до этого. Поэтому если выполнить подряд несколько команд plot, то в файле будет последний график, и только он. Чтобы построить несколько графиков на одном поле нужно указывать аргументы команды через запятую. В случае, если команда не помещается в одну строку, ее можно перенести, используя в конце строки символ \. Это тоже управляющий символ gnuplot.

Во второй строке задана толщина линии (lw) равная 2 пикселя, цвет красный, тип linespoints.

В третьей строке применено много сокращений:

  • вместо имени файла пустые кавычки ' ' – указывает на использование предыдущего файла;
  • with сокращено до w;
  • li – вместо lines;
  • и вовсе не указан цвет.

Тем не менее, цвет был выбран автоматически и отличающийся от тех, которые применялись раньше.

В случае, если надо печатать графики на черно-белом принтере, имеет смысл задать различные типы линий, чтобы их легче различать, например – линия (lines), линия с точками (linespoints) и пунктир (lt 0). Пример приведен в листинге 2.

Листинг 2. Использование различных типов линий
set terminal  png size 500,350 font 'Verdana, 10' 
set output 'ЧХ №1.png' 
plot '1.txt'using 1:2 w li lw 2, \ 
'1.txt'using 1:3 w linespoints lw 2 pt 7,\ 
'' u 1:4 w li lw 3 lt 0

На рисунке 2 приведен график с использованием различных типов линий.

Рисунок 2. График с использованием различных типов линий
Рисунок 2. График с использованием различных типов линий

Первая строка рисует обычную линию. Вторая строка рисует линию с точками (linespoints), тип точек pt 7. Третья рисует пунктир – это линия с типом lt 0.

Вовсе не обязательно помнить, как выглядит тот или иной тип линии или точек, тем более он может (и будет) меняться в зависимости от выбранного терминала. Чтобы посмотреть, что доступно для выбранного терминала, можно создать и запустить файл с командами, приведенными в листинге 3.

Листинг 3. Просмотр доступных типов для выбранного терминала
set terminal  png size 500,350 font 'Verdana, 10' 
set output 'test.png' 
test

В результате в файле test.png появится следующая картинка, показанная на рисунке 3.

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

Эта своеобразная таблица показывает, на что способен выбранный терминал. Кроме всего прочего, типы линий в столбце справа означают следующее: lt 1 – красная тонкая линия, если применить данный тип к линии с точками, то точки будут отмечены крестиками, серый пунктир – тип 0.


Настройки координатной сетки

Далее надо нарисовать координатную сетку для оси Y по следующим требованиям:

  • необходимо отложить звуковое давление в дБ, цена одного деления 1 дБ;
  • на сетку должны быть нанесены надписи, указывающие на величину звукового давления, через 5 дБ (130, 135, 140 и т.д.);
  • график должен быть похож на стандартный бланк, поэтому высота составляет 50 дБ.

Подписать ось можно следующей командой:

set ylabel "Величина, dB (0дБ=1В)"

По умолчанию надпись расположится вдоль оси (в даном случае оси Y).

Показать сетку координат можно командой:

set grid xtics ytics mytics

Установить сетку по X, Y и специальную (mytics) сетку для Y (о ней далее). По умолчанию программа сама выберет масштаб и надписи. Задать их можно следующим образом:

set yrange [90:140]

Диапазон значений по Y от 90 до 140.

Стоит отметить, что при выборе диапазона вручную, при ошибке график может не поместиться и частично или полностью не будет отображен.

Следующая команда указывает, что подписи надо ставить через 5 делений по оси Y, что можно расшифровать как "установить мои деления по оси Y" (set my Y tics):

set mytics (5)

В листинге 4 приведен файл scen.plt, в котором использованы настройки координатной сетки.

Листинг 4. Файл scen.plt, в котором использованы настройки координатной сетки для оси Y
set terminal  png size 500,350 font 'Verdana, 10' 
set output 'ЧХ №1.png' 
set ylabel "Величина, dB (0дБ=1В)" 
set yrange [90:140] 
set mytics (5) 
set grid xtics ytics mytics 
plot '1.txt'using 1:2 with lines lw 2 lt rgb 'red',\ 
'1.txt'using 1:3  with lines lw 2 lt rgb 'green',\ 
'' u 1:4 w lines lw 2 lt rgb 'blue'

Пример настройки координатной сетки для оси Y видно на рисунке 4, выполняется команда gnuplot c файлом scen.plt:

gnuplot "scen.plt"
Рисунок 4. Пример настройки координатной сетки для оси Y
Рисунок 4. Пример настройки координатной сетки для оси Y

Требования для оси X следующие:

  • необходим логарифмический масштаб;
  • по оси откладывается частота в Гц;
  • начинать построение надо с 300 Гц (даже если данные есть только с 400);
  • линии сетки должны быть нанесены следующим образом: 300, 400, 500, 600, 700, 800, 900, 1000, 1600, 2000, 3000, 4000, 5000 Гц;
  • надписи должны быть не у каждой линии, а только возле 500, 1000, 1600, 2000, 5000 Гц, причем начиная с 1000 писать 1к, 1.6к и т.д.

Перед командой set grid добавим параметры, приведенные в листинге 5:

Листинг 5. Параметры для настройки оси X
set logscale x # логарифмическая шкала для X
set xrange [300:5000]  # шкала от 300 до 5000
set xlabel "Частота, Гц" # подпись для оси X
set xtics ( "" 300,"" 400, "500" 500, "" 600, "" 700,"" 800, "" 900, "1k" 1000, 
"1.6k" 1600, "2k" 2000, "" 3000, "" 4000, "5k" 5000, "" 6000, "" 7000, 
"" 8000, "" 9000,"10k" 10000)

В последней команде указано как рисовать сетку для оси Х. Значение в кавычках – это то, что надо написать, через пробел – где написать. Так "500" 500 – значит, что надо провести отметку на 500 и рядом с ней написать «500», "" 300 – значит, что надо провести отметку на 300, но писать ничего не надо. Результат выполнения команды получим на рисунке 5.

Рисунок 5. Пример настройки координатной сетки для оси Х
Рисунок 5. Пример настройки координатной сетки для оси Х

Заключение

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

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


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