Вывод многострочного текста

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

Предположим, мы хотим разместить на осях в точке с координатами (0.5, 0.5) текст так, как показано на следующем рисунке:

С использованием массива ячеек это можно сделать следующим образом (для создания массива ячеек применяются фигурные скобки):

figureaxesstr = {'first line'; 'second line'; 'third line'};hT = text(0.5, 0.5, str, 'FontSize', 20)

Разумеется, можно было не создавать специальной переменной str, а сразу использовать массив ячеек при создании текстового ообъекта:

hT = text(0.5, 0.5, {'first line'; 'second line'; 'third line'}, 'FontSize', 20)

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

figureaxesstr = char('first line', 'second line', 'third line')hT = text(0.5, 0.5, str, 'FontSize', 20)

В двух примерах, приведенных выше, создавался один текстовый объект, указатель на который записывался в переменную hT. Если в качестве координат текста указать векторы, длина которых совпадает с числом строк многострочного текста, то получится столько текстовых объектов, сколько строк в тексте:

figureaxesstr = {'first text object'; 'second text object'; 'third text object'}hTT = text([0.1 0.3 0.5], [0.2 0.4 0.6], str, 'FontSize', 20)

Теперь hTT является вектором указателей на три текстовых объекта, свойства которых можно изменять независимо, например:

set(hTT(1), 'Color', 'r', 'FontWeight', 'bold')set(hTT(2), 'BackgroundColor', 'y', 'Color','b')set(hTT(3), 'EdgeColor', 'm', 'LineWidth',5)

Аналогичным образом можно использовать массив строк для создания нескольких текстовых объектов при помощи одной функции text. Кроме того, допускается использование символа вертикальной черты | в качестве разделителя строк. Т.е. в приведенном выше примере вместо str = {'first text object'; 'second text object'; 'third text object'} можно было написать:

str = char('first text object','second text object', 'third text object')

или

str = 'first text object|second text object|third text object'

и результат был бы тем же самым.

Приведем пример, в котором на оси выводится матрица

следующим образом:

Сначала создается двумерный массив M, в который заносятся заданные элементы матрицы. Затем при помощи функции size в переменные m и n записывается число его строк и столбцов. Далее в графическом окне располагаются оси со следующими свойствами: пределы по оси абсцисс от 0 до n+1, по оси ординат - от 0 до m+1, подписи осей совпадают с номерами строк и столбцов, ось абсцисс расположена сверху, а ось ординат направлена вниз. Далее в цикле проходим по столбцам матрицы. На каждом шаге цикла текущий столбец числовых значений матрицы преобразуем в массив строк функцией num2str и создаем столько текстовых объектов, сколько элементов в столбце (т.е. столько, сколько строк в матрице). Массив строк указываем в функции text для создания текстовых объектов и записываем указатели на полученные объекты в соответствующие позиции двумерного массива указателей hT.

M = [1 2 3 4; 5 6 7 8; 9 10 11 12] [m, n] = size(M); figure axes('XLim', [0 n+1], 'YLim', [0 m+1],... 'XTick', 1:n, 'YTick', 1:m,... 'YDir', 'reverse', 'XAxisLocation', 'top') hT = zeros(m, n) for j=1:n C = M(:, j) hT(:, j) = text(j*ones(1, m), 1:m, num2str(C),... 'HorizontalAlignment', 'center', 'FontSize', 30) end

В результате на оси выводится матрица и в двумерный массив hT заносятся указатели на все созданные текстовые объекты. Этот массив можно использовать для дальнейшей работы с ними. Например, если требуется изменить цвет элементов второй строки на красный, то достаточно выполнить:

set(hT(2,:), 'Color', 'r')

Если требуется выделить элементы, меньшие двух, синим цветом, от трех до семи - зеленым, а большие семи - красным так, как показано на рисунке ниже, то удобно применить логическое индексирование к массиву hT:

set(hT(M>7), 'Color', 'r') set(hT(M>=3&M<=7), 'Color', 'g') set(hT(M<3), 'Color', 'b')


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: