Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Trazado gráfico y personalización

En este ejemplo se muestra cómo trazar gráficos y, a continuación, personalizar la visualización para agregar etiquetas o resaltar a los nodos y aristas del gráfico.

Gráficos de trazado de objetos

Utilice la función para trazar y objetos.plotgraphdigraph De forma predeterminada, examina el tamaño y el tipo de gráfico para determinar el diseño que se usará.plot La ventana de figura resultante no contiene marcas de graduación de ejes. Sin embargo, si especifica las coordenadas de los nodos con los pares, o nombre-valor, la figura incluye los ticks de los ejes.(x,y)XDataYDataZData

Las etiquetas de nodo se incluyen automáticamente en parcelas de gráficos que tienen 100 o menos nodos. Las etiquetas de nodo utilizan los nombres de nodo si están disponibles; de lo contrario, las etiquetas son índices de nodos numéricos.

Por ejemplo, cree un gráfico utilizando la matriz de adyacencia buckybolas y, a continuación, trace el gráfico utilizando todas las opciones predeterminadas. Si llama y especifica un argumento de salida, la función devuelve un identificador a un objeto.plotGraphPlot Posteriormente, puede utilizar este objeto para ajustar las propiedades de la gráfica. Por ejemplo, puede cambiar el color o el estilo de los bordes, el tamaño y el color de los nodos, y así sucesivamente.

G = graph(bucky); p = plot(G)

p =    GraphPlot with properties:       NodeColor: [0 0.4470 0.7410]     MarkerSize: 4         Marker: 'o'      EdgeColor: [0 0.4470 0.7410]      LineWidth: 0.5000      LineStyle: '-'      NodeLabel: {1x60 cell}      EdgeLabel: {}          XData: [1x60 double]          YData: [1x60 double]          ZData: [1x60 double]    Show all properties  

Después de tener un identificador para el objeto, utilice la indexación de puntos para acceder o cambiar los valores de propiedad.GraphPlot Para obtener una lista completa de las propiedades que puede ajustar, consulte.GraphPlot Properties

Cambie el valor de to.NodeColor'red'

p.NodeColor = 'red';

Determine el ancho de línea de los bordes.

p.LineWidth
ans = 0.5000 

Crear y trazar gráfico

Crear y trazar un gráfico que represente una membrana en forma de L construida a partir de una rejilla cuadrada con un lado de 12 nodos. Especifique un argumento de salida con el fin de devolver un identificador al objeto.plotGraphPlot

n = 12; A = delsq(numgrid('L',n)); G = graph(A,'omitselfloops')
G =    graph with properties:      Edges: [130x2 table]     Nodes: [75x0 table]  
p = plot(G)

p =    GraphPlot with properties:       NodeColor: [0 0.4470 0.7410]     MarkerSize: 4         Marker: 'o'      EdgeColor: [0 0.4470 0.7410]      LineWidth: 0.5000      LineStyle: '-'      NodeLabel: {1x75 cell}      EdgeLabel: {}          XData: [1x75 double]          YData: [1x75 double]          ZData: [1x75 double]    Show all properties  

Cambiar diseño de nodo de gráfico

Utilice la función para cambiar el diseño de los nodos de gráfico en la gráfica.layout Las distintas opciones de diseño calculan automáticamente las coordenadas de nodo para el trazado. Como alternativa, puede especificar sus propias coordenadas de nodo con el, y las propiedades del objeto.XDataYDataZDataGraphPlot

En lugar de usar el método de diseño 2-D predeterminado, use para especificar el diseño, que es un diseño dirigido por fuerza 3-D.layout'force3'

layout(p,'force3') view(3)

Color de nodo proporcional

Colorea los nodos del gráfico en función de su grado. En este gráfico, todos los nodos interiores tienen el mismo grado máximo de 4, los nodos a lo largo del límite del gráfico tienen un grado de 3, y los nodos angulares tienen el grado más pequeño de 2. Almacene este nodo para colorear datos como la variable en.NodeColorsG.Nodes

G.Nodes.NodeColors = degree(G); p.NodeCData = G.Nodes.NodeColors; colorbar

Ancho de línea de borde por peso

Agregue algunos pesos enteros aleatorios a los bordes del gráfico y, a continuación, trace los bordes de tal manera que su ancho de línea sea proporcional a su peso. Puesto que un ancho de línea de arista aproximadamente mayor que 7 comienza a volverse engorroso, escale los anchos de línea de tal forma que el borde con el mayor peso tenga un ancho de línea de 7. Almacene estos datos de ancho de arista como la variable en.LWidthsG.Edges

G.Edges.Weight = randi([10 250],130,1); G.Edges.LWidths = 7*G.Edges.Weight/max(G.Edges.Weight); p.LineWidth = G.Edges.LWidths;

Extraer subgráfico

Extrae y traza la esquina superior derecha de como subgráfico, para que sea más fácil leer los detalles en el gráfico.G El nuevo gráfico, hereda las variables de, por lo que la recreación de las personalizaciones de trazado anteriores es sencilla.HNodeColorsLWidthsG Sin embargo, los nodos en se renumeran para tener en cuenta el nuevo número de nodos en el gráfico.H

H = subgraph(G,[1:31 36:41]); p1 = plot(H,'NodeCData',H.Nodes.NodeColors,'LineWidth',H.Edges.LWidths); colorbar

Etiquetar nodos y aristas

Se utiliza para etiquetar las aristas cuyo ancho es mayor que con la etiqueta,.labeledge6'Large' La función funciona de manera similar para etiquetar nodos.labelnode

labeledge(p1,find(H.Edges.LWidths > 6),'Large')

Resaltar ruta más corta

Encuentre la ruta más corta entre el nodo 11 y el nodo 37 en el subgráfico,.H Resalte los bordes a lo largo de esta ruta en rojo y aumente el tamaño de los nodos finales en el trazado.

path = shortestpath(H,11,37)
path = 1×10

    11    12    17    18    19    24    25    30    36    37

highlight(p1,[11 37]) highlight(p1,path,'EdgeColor','r')

Quite las etiquetas de nodo y la barra de colores y haga que todos los nodos sean negros.

p1.NodeLabel = {}; colorbar off p1.NodeColor = 'black';

Busque una ruta más corta diferente que ignore los pesos de arista. Resalte este camino en verde.

path2 = shortestpath(H,11,37,'Method','unweighted')
path2 = 1×10

    11    12    13    14    15    20    25    30    31    37

highlight(p1,path2,'EdgeColor','g')

Trazar gráficos grandes

Es común crear gráficos que tengan cientos de miles, o incluso millones, de nodos y/o aristas. Por esta razón, trata los gráficos de gran tamaño ligeramente diferente para mantener la legibilidad y el rendimiento.plot La función realiza estos ajustes cuando se trabaja con gráficos que tienen más de 100 nodos:plot

  1. El método de diseño de gráfico predeterminado es siempre.'subspace'

  2. Los nodos ya no se etiquetan automáticamente.

  3. La propiedad está establecida en.MarkerSize2 (Los gráficos más pequeños tienen un tamaño de marcador).4

  4. La propiedad de los gráficos dirigidos se establece en.ArrowSize4 (Los gráficos dirigidos más pequeños utilizan un tamaño de flecha).7

Consulte también

| | |

Temas relacionados