Contenido principal

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.Edges
ans=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)

Figure contains an axes object. The axes object contains an object of type graphplot.

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

Consulte también

|

Temas