Añadir nombres de los nodos de grafos, ponderaciones de bordes y otros atributos
En este ejemplo se muestra cómo añadir atributos a los nodos y bordes de grafos que se han creado con graph y digraph. Puede especificar nombres de nodos o ponderaciones de bordes cuando llama originalmente a graph o digraph para crear un grafo. Sin embargo, en este ejemplo se muestra cómo añadir atributos a un grafo una vez que se haya creado.
Crear un grafo
Cree un grafo dirigido. Los elementos correspondientes en s y t definen los nodos fuente y objetivo para cada borde del grafo.
s = [1 1 2 2 3]; t = [2 4 3 4 4]; G = digraph(s,t)
G =
digraph with properties:
Edges: [5×1 table]
Nodes: [4×0 table]
Añadir nombres de nodos
Añada nombres de nodos al grafo añadiendo la variable Name a la tabla G.Nodes. La variable Name debe especificarse como un arreglo de celdas de vectores de caracteres o un arreglo de cadenas de N por 1, donde N = numnodes(G). Es importante utilizar la variable Name cuando se añaden nombres de nodos, ya que algunas funciones de grafos tratan este nombre de variable de forma especial.
G.Nodes.Name = {'First' 'Second' 'Third' 'Fourth'}';Vea la nueva tabla Nodes.
G.Nodes
ans=4×1 table
Name
__________
{'First' }
{'Second'}
{'Third' }
{'Fourth'}
Utilice la indexación de tablas para ver los nombres de los nodos 1 y 4.
G.Nodes.Name([1 4])
ans = 2×1 cell
{'First' }
{'Fourth'}
Añadir ponderaciones de bordes
Añada ponderaciones de bordes al grafo añadiendo la variable Weight a la tabla G.Edges. La variable Weight debe ser un vector numérico de M por 1, donde M = numedges(G). Es importante utilizar la variable Weight cuando se añaden ponderaciones de bordes, ya que algunas funciones de grafos tratan este nombre de variable de forma especial.
G.Edges.Weight = [10 20 30 40 50]';
Vea la nueva tabla Edges.
G.Edges
ans=5×2 table
EndNodes Weight
________________________ ______
{'First' } {'Second'} 10
{'First' } {'Fourth'} 20
{'Second'} {'Third' } 30
{'Second'} {'Fourth'} 40
{'Third' } {'Fourth'} 50
Utilice la indexación de tablas para ver la primera y tercera fila de G.Edges.
G.Edges([1 3],:)
ans=2×2 table
EndNodes Weight
________________________ ______
{'First' } {'Second'} 10
{'Second'} {'Third' } 30
Añadir atributos personalizados
En principio, puede añadir a G.Nodes y G.Edges cualquier variable que defina un atributo de los nodos y bordes del grafo. Añadir atributos personalizados puede ser útil, ya que funciones como subgraph y reordernodes conservan los atributos del grafo.
Por ejemplo, añada una variable llamada Power a G.Edges para indicar si cada borde está 'on' u 'off'.
G.Edges.Power = {'on' 'on' 'on' 'off' 'off'}';
G.Edgesans=5×3 table
EndNodes Weight Power
________________________ ______ _______
{'First' } {'Second'} 10 {'on' }
{'First' } {'Fourth'} 20 {'on' }
{'Second'} {'Third' } 30 {'on' }
{'Second'} {'Fourth'} 40 {'off'}
{'Third' } {'Fourth'} 50 {'off'}
Añada una variable llamada Size a G.Nodes para indicar el tamaño físico de cada nodo.
G.Nodes.Size = [10 20 10 30]'; G.Nodes
ans=4×2 table
Name Size
__________ ____
{'First' } 10
{'Second'} 20
{'Third' } 10
{'Fourth'} 30
Modificar las tablas con el editor de variables
Dado que Nodes y Edges son tablas, puede usar el editor de variables para ver o editar de manera interactiva las tablas. Para obtener más información, consulte Crear y editar variables.
Etiquetar nodos y bordes de la representación de un grafo
Cuando representa un grafo, puede utilizar las variables en G.Nodes y G.Edges para etiquetar los nodos y bordes del grafo. Esta técnica resulta práctica, dado que ya está garantizado que estas variables tienen el número correcto de elementos.
Represente el grafo y etiquete los bordes usando la variable Power en G.Edges. Etiquete los bordes usando la variable Size en G.Nodes.
p = plot(G,'EdgeLabel',G.Edges.Power,'NodeLabel',G.Nodes.Size)

p =
GraphPlot with properties:
NodeColor: [0.0660 0.4430 0.7450]
MarkerSize: 4
Marker: 'o'
EdgeColor: [0.0660 0.4430 0.7450]
LineWidth: 0.5000
LineStyle: '-'
NodeLabel: {'10' '20' '10' '30'}
EdgeLabel: {'on' 'on' 'on' 'off' 'off'}
XData: [2 1.5000 1 2]
YData: [4 3 2 1]
ZData: [0 0 0 0]
Show all properties