Как задать толщину линии на графике в Scilab

Чтобы тонко настраивать толщину и начертание графиков в Scilab, придётся поработать с объектами.

С помощью ключевого gca() происходит обращение к последней созданной сетке координат: get current axes.

У самой сетки есть некоторые настраиваемые параметры (Подробнее в материале Настройка графиков: свойства осей и сетки), но сейчас не о них. Нас интересуют объекты, расположенные на данной сетке координат, а именно - графики. Графики - это "потомки", дети на сетке, при этом нумерация этих потомков идёт от последнего добавленного к первому.

Рассмотрим простой пример изменения толщины графика.


clc; clf();           //очистим консоль и графическое окно
  t = 0:0.01:10;
subplot(121)         //разделим окошко на одну строку и два столбца, выберем 1-ю ячейку
plot(t, cos(t),'r'); //строим график косинуса
xgrid(); xtitle("Это просто косинус", "$\Large t$", "$cos(t)$");


subplot(122)        //выберем 2-ю ячейку условной таблиуе в графическом окне
plot(t, sin(t),'r');//строим график синуса
xgrid();xtitle("Это синус толщиной 2", "$\Large t$", "$\Large sin(t)$");

sin_axes = gca(); //обращаемся к последним осям, на которых живет sin(t)
//обращаемся к осям c sin(t) и делаем его потолще
sin_axes.children.children(1).thickness = 2;  
   
Тригонометрические функции с линиями разной толщины.

Результат работы программы:

Рисунок. Жирность линии на графике в scilab. Рисунок. Жирность линии на графике в scilab.

Пример с обращением к разным осям.

После того, как заведена переменная для какой-либо из сеток координат, параметры этой сетки и её содержимого можно менять в любом месте программы.

В приведённом примере, переменные для осей синуса и косинуса заводятся сразу после построения графиков, а изменение толщины линий графиков происходит в самом конце программы.


clc; clf();           //очистим консоль и графическое окно
  t = 0:0.01:10;
subplot(121)         //разделим окошко на одну строку и два столбца, выберем 1-ю ячейку
plot(t, cos(t),'r'); //строим график косинуса
xgrid(); xtitle("Это просто косинус толщиной 4", "$\Large t$", "$cos(t)$");
cos_axes = gca(); //обращаемся к осям, на которых живет cos(t)

subplot(122)        //выберем 2-ю ячейку условной таблиуе в графическом окне
plot(t, sin(t),'r');//строим график синуса
xgrid();xtitle("Это синус толщиной 2", "$\Large t$", "$\Large sin(t)$");
sin_axes = gca(); //обращаемся к осям, на которых живет sin(t)

//обращаемся к осям c cos(t) и делаем его потолще
cos_axes.children.children(1).thickness = 4;  
  
//обращаемся к осям c sin(t) и делаем его потолще
sin_axes.children.children(1).thickness = 2;    
Тригонометрические функции с линиями разной ширины.

Результат работы программы:

Рисунок. Графики разной толщины в scilab. Рисунок. Графики разной толщины в scilab.

Пример с несколькими графиками.

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

В этом случа придётся манипулировать параметром, отвечающим за номер графика на сетке координат a.children.children(1).


clc; clf();           //очистим консоль и графическое окно
t = 0:0.01:10;
subplot(121)         //разделим окошко на одну строку и два столбца, выберем 1-ю ячейку
plot(t, cos(t),'r'); //строим график косинуса
plot(t, sin(t),'b');//строим график синуса
xgrid(); xtitle("Это синус и косинус", "$\Large t$", "$sin(t), cos(t)$");
trig_axes = gca(); //обращаемся к осям с тригонометрическими функциями

subplot(122)        //выберем 2-ю ячейку условной таблиуе в графическом окне
plot(t, 0*t + 2,'g');//строим график прямой
plot(t,   t + 2,'m');//строим график прямой
xgrid();xtitle("Это прямые", "$\Large t$", "$\Large 2, t+2 $");
line_axes = gca(); //обращаемся к осям с прямыми

//обращаемся к осям c cos(t) и sin(t)) и задаём ширину линии
trig_axes.children.children(2).thickness = 2;  // cos(t)
trig_axes.children.children(1).thickness = 4;  // sin(t) (нумерация с конца)
 
//обращаемся к осям c прямыми
line_axes.children.children(2).thickness = 6; // 2
line_axes.children.children(1).thickness = 2; // t + 2  
Установка толщины линий графиков на разных сетках.

Результат работы программы:

Рисунок. Графики разной толщины на разных координатных сетках в scilab. Рисунок. Графики разной толщины на разных координатных сетках в scilab.

Обратите внимание, как нумеруются графики. В случае с тригонометрическими функциями, сначала на сетку был добавлен косинус с помощью функции plot(), а затем - синус. При установке ширины, обращение к потомкам осей происходит в обратном порядке: последний добавленный график имеет номер 1.

Границы координатной сетки, стиль линий, настройка цвета.

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

Чтобы расширить (или уменьшить) границы сетки - оси \( x \) и \(y \), нужно обратиться к нужной сетке и задать желаемые знанчения в формате [Xmin, Ymin; Xmax, Ymax].

Например, указав значения a.data_bounds=[-6,-2; 15,0], мы принудительно укажем, что координатная сетка будет изображена по горизонтальной оси от -6 до 15, а по вертикальной ограничиваться значениями от -2 до 0.

Помимо обрезки\расширения координатных осей в Scilab, вам может понадобиться сформировать цвет автоматически в формате rgb. Для этого необходимо воспользоваться функцией color(r,g,b), где r,g,b - принимают значения от 0 до 255.

Кроме цвета и жирности, у графиков в Scilab можно менять начертание - стиль линии. Стиль задаётся натуральным числом от 1 до 10 с помощью обращения к нужному графику a.children(1).line_style = 3


clc; clf();           //очистим консоль и графическое окно
t = 0:0.01:10;

plot(t, cos(t),'r'); //строим график косинуса
plot(t, sin(t),'b');//строим график синуса
xgrid(); xtitle("Это синус и косинус", "$\Large t$", "$sin(t), cos(t)$");
trig_axes = gca(); //обращаемся к осям с тригонометрическими функциями

//обращаемся к осям c cos(t) и sin(t)) и задаём ширину линии
trig_axes.children.children(2).thickness = 2;  // cos(t)
trig_axes.children.children(1).thickness = 4;  // sin(t) (нумерация с конца)
 
//задаём границы осям c прямыми [Xmin, Ymin; Xmax, Ymax]
trig_axes.data_bounds=[0,-2; 12,2];

//задаём стиль sin(t) -- штрих
trig_axes.children.children(1).line_style = 2; // t + 2

//задаём цвет cos(t) в формате rgb
trig_axes.children.children(2).foreground = color(255,130,71); 
Установка границ координатной сетки, толщины, цвета и стиля линий на графике в Scilab.

Результат работы программы:

Рисунок. Графики разной стилистики в scilab. Рисунок. Графики разной стилистики в scilab.

Данная статья получила продолжение в материале Настройка графиков: свойства осей и сетки.

Комментарии

Гость
Ответить
Войдите, чтобы оставить комментарий.
Гость
Ответить
Гость
Ответить
Гость
Ответить
Еще нет комментариев, оставьте первый.