NestGraph

NestGraph[f,expr,n]

gives the graph obtained by starting with expr and applying f successively n times.

NestGraph[f,{expr1,expr2,},n]

gives the graph obtained by applying f to expr1, expr2, .

NestGraph[f,graph,n]

gives the graph obtained by applying f to the vertices of graph and extending the graph.

Details and Options

  • NestGraph is also known as crawl graph or tree growing.
  • expr can be an expression or a list of expressions or graphs.
  • NestGraph[f,expr] is equivalent to NestGraph[f,expr,1].
  • NestGraph[f,expr] gives a graph with edges {exprexpr1,,exprexprk}, where f[expr] evaluates to {expr1,,exprk}.
  • NestGraph[f,{expr1,expr2,}] is the graph union of NestGraph[f,expr1] and NestGraph[f,expr2],.
  • NestGraph[f,graph] is the union of graph and NestGraph[f,{v1,}], where vi are the vertices of graph.
  • NestGraph[f,graph,n] is the union of NestGraph[f,graph,n-1] and NestGraph[f,{v1,}], where vi are the vertices of NestGraph[f,graph,n-1].
  • NestGraph[f,expr,n] is equivalent to NestGraph[f,graph,n], where graph is the singleton graph with only one vertex expr and no edges.
  • NestGraph takes the same options as Graph.
  • The option DirectedEdges can be used to control whether an undirected or directed graph is constructed.

Examples

open allclose all

Basic Examples  (4)

Construct a graph by starting with x and applying f successively 3 times:

The function to nest can be a pure function:

Generate a binary tree of nested functions:

Generate a graph of neighboring countries around Switzerland:

Scope  (3)

NestGraph works with any function including an expression:

A pure function:

NestGraph works with any expression including integers:

Strings:

Graphs:

Limit the depth of the tree:

Options  (80)

AnnotationRules  (2)

Specify an annotation for vertices:

Edges:

DirectedEdges  (1)

By default, a directed graph is generated:

Use DirectedEdges->False to generate an undirected graph:

EdgeLabels  (7)

Label the edge 12:

Label all edges individually:

Use any expression as a label:

Use Placed with symbolic locations to control label placement along an edge:

Use explicit coordinates to place labels:

Vary positions within the label:

Place multiple labels:

Use automatic labeling by values through Tooltip and StatusArea:

EdgeShapeFunction  (6)

Get a list of built-in settings for EdgeShapeFunction:

Undirected edges including the basic line:

Lines with different glyphs on the edges:

Directed edges including solid arrows:

Line arrows:

Open arrows:

Specify an edge function for an individual edge:

Combine with a different default edge function:

Draw edges by running a program:

EdgeShapeFunction can be combined with EdgeStyle:

EdgeShapeFunction has higher priority than EdgeStyle:

EdgeStyle  (2)

Style all edges:

Style individual edges:

EdgeWeight  (2)

Specify a weight for all edges:

Use any numeric expression as a weight:

GraphHighlight  (3)

Highlight the vertex 1:

Highlight the edge 23:

Highlight vertices and edges:

GraphHighlightStyle  (2)

Get a list of built-in settings for GraphHighlightStyle:

Use built-in settings for GraphHighlightStyle:

GraphLayout  (5)

By default, the layout is chosen automatically:

Specify layouts on special curves:

Specify layouts that satisfy optimality criteria:

VertexCoordinates overrides GraphLayout coordinates:

Use AbsoluteOptions to extract VertexCoordinates computed using a layout algorithm:

PlotTheme  (4)

Base Themes  (2)

Use a common base theme:

Use a monochrome theme:

Feature Themes  (2)

Use a large graph theme:

Use a classic diagram theme:

VertexCoordinates  (3)

By default, any vertex coordinates are computed automatically:

Extract the resulting vertex coordinates using AbsoluteOptions:

Specify a layout function along an ellipse:

Use it to generate vertex coordinates for a graph:

VertexCoordinates has higher priority than GraphLayout:

VertexLabels  (13)

Use vertex names as labels:

Label individual vertices:

Label all vertices:

Use any expression as a label:

Use Placed with symbolic locations to control label placement, including outside positions:

Symbolic outside corner positions:

Symbolic inside positions:

Symbolic inside corner positions:

Use explicit coordinates to place the center of labels:

Place all labels at the upper-right corner of the vertex and vary the coordinates within the label:

Place multiple labels:

Any number of labels can be used:

Use the argument Placed to control formatting including Tooltip:

Or StatusArea:

Use more elaborate formatting functions:

VertexShape  (5)

Use any Graphics, Image, or Graphics3D as a vertex shape:

Specify vertex shapes for individual vertices:

VertexShape can be combined with VertexSize:

VertexShape is not affected by VertexStyle:

VertexShapeFunction has higher priority than VertexShape:

VertexShapeFunction  (10)

Get a list of built-in collections for VertexShapeFunction:

Use built-in settings for VertexShapeFunction in the "Basic" collection:

Simple basic shapes:

Common basic shapes:

Use built-in settings for VertexShapeFunction in the "Rounded" collection:

Use built-in settings for VertexShapeFunction in the "Concave" collection:

Draw individual vertices:

Combine with a default vertex function:

Draw vertices using a predefined graphic:

Draw vertices by running a program:

VertexShapeFunction can be combined with VertexStyle:

VertexShapeFunction has higher priority than VertexStyle:

VertexShapeFunction has higher priority than VertexSize:

VertexShapeFunction has higher priority than VertexShape:

VertexSize  (8)

By default, the size of vertices is computed automatically:

Specify the size of all vertices using symbolic vertex size:

Use a fraction of the minimum distance between vertex coordinates:

Use a fraction of the overall diagonal for all vertex coordinates:

Specify size in both the and directions:

Specify the size for individual vertices:

VertexSize can be combined with VertexShapeFunction:

VertexSize can be combined with VertexShape:

VertexStyle  (5)

Style all vertices:

Style individual vertices:

VertexShapeFunction can be combined with VertexStyle:

VertexShapeFunction has higher priority than VertexStyle:

VertexStyle can be combined with BaseStyle:

VertexStyle has higher priority than BaseStyle:

VertexShape is not affected by VertexStyle:

VertexWeight  (2)

Set the weight for all vertices:

Use any numeric expression as a weight:

Applications  (2)

Generate a network of "nearby" functions in the Wolfram Language:

Visualize file systems:

Properties & Relations  (5)

Use VertexCount and EdgeCount to count vertices and edges:

Use VertexList and EdgeList to enumerate vertices and edges in standard order:

Compute the AdjacencyMatrix from a graph:

NeighborhoodGraph can be found by using NestGraph:

Generate a tree of nested functions as lists:

Generate as a graph:

Neat Examples  (1)

Introduced in 2015
 (10.2)