Как задать толщину линии на графике в 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;
Тригонометрические функции с линиями разной толщины.
Результат работы программы:
Пример с обращением к разным осям.
После того, как заведена переменная для какой-либо из сеток координат, параметры этой сетки и её содержимого можно менять в любом месте программы.
В приведённом примере, переменные для осей синуса и косинуса заводятся сразу после построения графиков, а изменение толщины линий графиков происходит в самом конце программы.
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;
Тригонометрические функции с линиями разной ширины.
Результат работы программы:
Пример с несколькими графиками.
Давайте посмотрим, как быть, если на одной сетке располагается более одного графика и таких сеток несколько.
В этом случа придётся манипулировать параметром, отвечающим за номер графика на сетке координат 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
Установка толщины линий графиков на разных сетках.
Результат работы программы:
Обратите внимание, как нумеруются графики. В случае с тригонометрическими функциями, сначала на сетку был добавлен косинус с помощью функции 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.
Результат работы программы:
Данная статья получила продолжение в материале Настройка графиков: свойства осей и сетки.
Комментарии