В этом примере показано, как добавлять и настраивать метки на узлах и кромках графика.
Создайте график, представляющий улицы и перекрестки с сетками в городе. Добавьте веса к краям, чтобы главные проспекты и перекрестные улицы по-разному отображались на графике. Постройте график с шириной линии ребра, пропорциональной весу ребра.
s = [1 1 2 2 3 4 4 5 5 6 7 7 8 8 9 10 11];
t = [2 4 3 5 6 5 7 6 8 9 8 10 9 11 12 11 12];
weights = [1 5 1 5 5 1 5 1 5 5 1 5 1 5 5 1 1];
G = graph(s,t,weights);
P = plot(G,'LineWidth',G.Edges.Weight);
Для графиков со 100 или менее узлами MATLAB ® автоматически маркирует узлы с помощью числовых индексов узлов или имен узлов (по умолчанию эти метки пропускаются большими графами). Однако можно изменить метки узлов, настроив NodeLabel имущества GraphPlot объект P или с помощью labelnode функция. Поэтому, даже если узлы имеют имена, можно использовать метки, которые отличаются от имен.
Удалите метки числовых узлов по умолчанию. Пометить одно из пересечений как Home и другой как Work.
labelnode(P,1:12,'') labelnode(P,5,'Home') labelnode(P,12,'Work')

Кромки на графике не помечаются автоматически. Можно добавить метки кромок, изменив значение EdgeLabel имущества GraphPlot объект P или с помощью labeledge функция.
Добавление меток кромок для улиц в Нью-Йорке. Порядок ребер определяется в G.Edges таблицы графика, поэтому порядок указанных меток должен соответствовать этому порядку. Удобно хранить краевые метки непосредственно в G.Edges , так что имя края находится рядом с другой информацией о ребре.
G.Edges
ans=17×2 table
EndNodes Weight
________ ______
1 2 1
1 4 5
2 3 1
2 5 5
3 6 5
4 5 1
4 7 5
5 6 1
5 8 5
6 9 5
7 8 1
7 10 5
8 9 1
8 11 5
9 12 5
10 11 1
⋮
Этот пример имеет 17 краев, но только 7 уникальных названий улиц. Поэтому имеет смысл определить названия улиц в массиве ячеек, а затем проиндексировать их в массив ячеек для получения нужного имени улиц для каждого края. Добавление переменной к G.Edges таблица, содержащая названия улиц.
streets = {'8th Ave' '7th Ave' '6th Ave' '5th Ave' ...
'W 20th St' 'W 21st St' 'W 22nd St'}';
inds = [1 5 1 6 7 2 5 2 6 7 3 5 3 6 7 4 4];
G.Edges.StreetName = streets(inds);
G.Edgesans=17×3 table
EndNodes Weight StreetName
________ ______ _____________
1 2 1 {'8th Ave' }
1 4 5 {'W 20th St'}
2 3 1 {'8th Ave' }
2 5 5 {'W 21st St'}
3 6 5 {'W 22nd St'}
4 5 1 {'7th Ave' }
4 7 5 {'W 20th St'}
5 6 1 {'7th Ave' }
5 8 5 {'W 21st St'}
6 9 5 {'W 22nd St'}
7 8 1 {'6th Ave' }
7 10 5 {'W 20th St'}
8 9 1 {'6th Ave' }
8 11 5 {'W 21st St'}
9 12 5 {'W 22nd St'}
10 11 1 {'5th Ave' }
⋮
Обновить EdgeLabel свойство для ссылки на эти названия улиц.
P.EdgeLabel = G.Edges.StreetName;

Метки узлов и кромок на графике графика имеют свои собственные свойства, которые управляют внешним видом и стилем меток. Поскольку свойства разъединены, можно использовать различные стили для меток узлов и меток кромок.
Для меток узлов можно настроить:
NodeLabel
NodeLabelColor
NodeFontName
NodeFontSize
NodeFontWeight
NodeFontAngle
Для меток кромок можно настроить следующие параметры:
EdgeLabel
EdgeLabelColor
EdgeFontName
EdgeFontSize
EdgeFontWeight
EdgeFontAngle
Используйте следующие свойства для настройки шрифтов в данном примере с улицами Нью-Йорка:
Изменение NodeFontSize и NodeLabelColor таким образом, метки пересечения имеют шрифт 12 шт. и красный цвет.
Изменение EdgeFontWeight, EdgeFontAngle, и EdgeFontSize использование большего, полужирного шрифта для улиц в одном направлении и меньшего, курсивного шрифта для улиц в другом направлении.
Изменение EdgeFontName чтобы использовать Times New Roman для меток кромок.
Вы можете использовать highlight для изменения свойств графа подмножества рёбер графа. Создание логического индекса isAvenue то есть true для меток краев, содержащих слово 'Ave'. Использование этого логического вектора в качестве входных данных для highlight, маркировать все проспекты одним способом, и все неавеню другим способом.
P.NodeFontSize = 12; P.NodeLabelColor = 'r'; isAvenue = contains(P.EdgeLabel, 'Ave'); highlight(P, 'Edges', isAvenue, 'EdgeFontAngle', 'italic', 'EdgeFontSize', 7); highlight(P, 'Edges', ~isAvenue, 'EdgeFontWeight', 'bold', 'EdgeFontSize', 10); P.EdgeFontName = 'Times New Roman';

Найдите кратчайший путь между домашними и рабочими узлами и проверьте, какие улицы находятся на пути. Выделите узлы и кромки на контуре красным цветом и удалите метки кромок для всех кромок, которые не находятся на контуре.
[path,d,pathEdges] = shortestpath(G,5,12)
path = 1×4
5 6 9 12
d = 11
pathEdges = 1×3
8 10 15
G.Edges.StreetName(pathEdges,:)
ans = 3x1 cell
{'7th Ave' }
{'W 22nd St'}
{'W 22nd St'}
highlight(P,'Edges',pathEdges,'EdgeColor','r') highlight(P,path,'NodeColor','r') labeledge(P, setdiff(1:numedges(G), pathEdges), '')
