Graph
Graph[{e1,e2,…}]
yields a graph with edges ej.
Graph[{v1,v2,…},{e1,e2,…}]
yields the graph with vertices vi and edges ej.
Graph[{…,wi[vi,…],…},{…,wj[ej,…],…}]
yields a graph with vertex and edge properties defined by the symbolic wrappers wk.
Graph[data]
yields a graph from data.
Details and Options
- Graph[…] displays in a notebook as a plot of a graph.
- Graph[…] is always converted to an optimized standard form with structure Graph[vertices,edges,…].
- Graph is treated as a raw object by functions like AtomQ, and for purposes of pattern matching.
- An undirected edge between u and v can be given as uv, u<->v, UndirectedEdge[u,v] or TwoWayRule[u,v]. The character can be entered as ue.
- A directed edge from u to v can be given as uv, u->v, DirectedEdge[u,v], or Rule[u,v]. The character can be entered as de.
- A tagged edge from u to v can be given as uv, uv, UndirectedEdge[u,v,t] or DirectedEdge[u,v,t].
- An undirected graph is specified using a collection of undirected edges.
- A directed graph is specified using a collection of directed edges.
- A mixed graph is specified using a collection of directed and undirected edges.
- The following special wrappers can be used for vertices and edges:
-
Annotation[a,label] provide an annotation Button[a,action] define an action to execute when the element is clicked EventHandler[a,…] define a general event handler for the element Hyperlink[a,uri] make the element act as a hyperlink Labeled[a,…] display the element with labeling PopupWindow[a,cont] attach a popup window to the element StatusArea[a,label] display in the status area when the element is moused over Style[a,opts] show the element using the specified styles Tooltip[a,label] attach an arbitrary tooltip to the element - The possible label placements are given in VertexLabels and EdgeLabels, respectively.
- Annotation can be used to associate annotations with vertices and edges:
-
Annotation[v,name->value] associate the annotation name->value with the vertex v Annotation[e,name->value] associate the annotation name->value with the edge e - The data can be any of the following:
-
an Entity of type "Graph" arbitrary Graph object a Molecule object a Tree expression a DiscreteMarkovProcess object - The following standard properties are supported for vertices:
-
VertexLabels labels and label placement for vertices VertexCoordinates center coordinates for vertices VertexShape graphic shape used for vertices VertexSize size used for vertices VertexStyle style used for vertices VertexShapeFunction shape-rendering function for vertex VertexWeight weights for vertices - The following standard properties are supported for edges:
-
EdgeLabels labels and label placement for edges EdgeStyle style used for edges EdgeShapeFunction shape-rendering function for edge EdgeWeight weights for edges - Graph has the same options as Graphics, with the following additions and changes: [List of all options]
-
AnnotationRules {} annotations for graph, edges and vertices DirectedEdges Automatic whether to interpret Rule as DirectedEdge EdgeLabels None labels and label placements for edges EdgeLabelStyle Automatic style to use for edge labels EdgeShapeFunction Automatic generate graphic shapes for edges EdgeStyle Automatic style used for edges EdgeWeight Automatic weights for edges GraphHighlight {} graph elements to highlight GraphHighlightStyle Automatic style for highlight GraphLayout Automatic how to lay out vertices and edges PerformanceGoal Automatic aspects of performance to try to optimize PlotTheme $PlotTheme overall theme for the graph VertexCoordinates Automatic coordinates for vertices VertexLabels None labels and placements for vertices VertexLabelStyle Automatic style to use for vertex labels VertexShape Automatic graphic shape for vertices VertexShapeFunction Automatic generate graphic shapes for vertices VertexSize Medium size of vertices VertexStyle Automatic styles for vertices VertexWeight Automatic weights for vertices - Possible settings for PlotTheme include common base themes, color feature themes, font features themes, and size features themes.
- Graph feature themes affect the plots of vertices and edges. Feature themes include:
-
"LargeGraph" large graph "ClassicLabeled" classic graph "IndexLabeled" index labeled graph "NameLabeled" name labeled graph - AnnotationRules->{a->{name1->val1,…},…} associates the property name1->val1 etc. with a that can be a vertex, edge, or the graph itself. The following strings for a have special meanings:
-
"DefaultEdgeProperties" default edge properties "DefaultVertexProperties" default vertex properties "GraphProperties" properties for the graph itself - With the setting VertexCoordinates->Automatic, the placement of vertices and routing of edges is computed automatically, based on the setting for GraphLayout.
- Style and other specifications for edges are effectively applied in the order PlotTheme, EdgeStyle, GraphHighlightStyle, Style and other wrappers, and EdgeShapeFunction, with later specifications overriding earlier ones.
- Style and other specifications for vertices are effectively applied in the order PlotTheme, VertexStyle, GraphHighlightStyle, Style and other wrappers, and VertexShapeFunction, with later specifications overriding earlier ones.
- Label style and other specifications for edge labels are effectively applied in the order PlotTheme, EdgeLabelStyle, GraphHighlightStyle, Labeled, and EdgeLabels, with later specifications overriding earlier ones.
- Label style and other specifications for vertex labels are effectively applied in the order PlotTheme, VertexLabelStyle, GraphHighlightStyle, Labeled, and VertexLabels, with later specifications overriding earlier ones.
-
AlignmentPoint Center the default point in the graphic to align with AnnotationRules {} annotations for graph, edges and vertices AspectRatio Automatic ratio of height to width Axes False whether to draw axes AxesLabel None axes labels AxesOrigin Automatic where axes should cross AxesStyle {} style specifications for the axes Background None background color for the plot BaselinePosition Automatic how to align with a surrounding text baseline BaseStyle {} base style specifications for the graphic ContentSelectable Automatic whether to allow contents to be selected CoordinatesToolOptions Automatic detailed behavior of the coordinates tool DirectedEdges Automatic whether to interpret Rule as DirectedEdge EdgeLabels None labels and label placements for edges EdgeLabelStyle Automatic style to use for edge labels EdgeShapeFunction Automatic generate graphic shapes for edges EdgeStyle Automatic style used for edges EdgeWeight Automatic weights for edges Epilog {} primitives rendered after the main plot FormatType TraditionalForm the default format type for text Frame False whether to put a frame around the plot FrameLabel None frame labels FrameStyle {} style specifications for the frame FrameTicks Automatic frame ticks FrameTicksStyle {} style specifications for frame ticks GraphHighlight {} graph elements to highlight GraphHighlightStyle Automatic style for highlight GraphLayout Automatic how to lay out vertices and edges GridLines None grid lines to draw GridLinesStyle {} style specifications for grid lines ImageMargins 0. the margins to leave around the graphic ImagePadding All what extra padding to allow for labels etc. ImageSize Automatic the absolute size at which to render the graphic LabelStyle {} style specifications for labels Method Automatic details of graphics methods to use PerformanceGoal Automatic aspects of performance to try to optimize PlotLabel None an overall label for the plot PlotRange All range of values to include PlotRangeClipping False whether to clip at the plot range PlotRangePadding Automatic how much to pad the range of values PlotRegion Automatic the final display region to be filled PlotTheme $PlotTheme overall theme for the graph PreserveImageOptions Automatic whether to preserve image options when displaying new versions of the same graphic Prolog {} primitives rendered before the main plot RotateLabel True whether to rotate y labels on the frame Ticks Automatic axes ticks TicksStyle {} style specifications for axes ticks VertexCoordinates Automatic coordinates for vertices VertexLabels None labels and placements for vertices VertexLabelStyle Automatic style to use for vertex labels VertexShape Automatic graphic shape for vertices VertexShapeFunction Automatic generate graphic shapes for vertices VertexSize Medium size of vertices VertexStyle Automatic styles for vertices VertexWeight Automatic weights for vertices
List of all options
Examples
open allclose allBasic Examples (5)
Scope (27)
Connectivity (8)
Create an undirected graph using characters. Enter the character as ue:
Create a directed graph using characters. Enter the character as de:
Create a directed graph from a list of rules:
Create an undirected graph from a list of rules:
Specify a graph with isolated vertices by giving an explicit list of vertices:
Use VertexList and EdgeList to get vertices and edges:
The ordering for edges is the order in which they were entered:
The ordering for vertices is the order in which they were entered in the edges:
Use an explicit vertex list to control the ordering used by VertexList:
The input vertex list controls the resulting vertex order:
Wrappers (5)
Use wrappers on vertices or edges:
Add interactive behavior by wrappers such as Tooltip:
Any object can be used in the tooltip:
Use Button to trigger actions when clicking an edge or vertex:
Use PopupWindow to provide information drilldown:
Styling (8)
Set the style for all vertices or edges:
Style individual vertices or edges using options:
Use wrappers for individual styling:
Adjust the size of vertices using symbolic sizes:
Or use sizes in terms of the smallest distance between vertex centers:
Use built-in collections for VertexShapeFunction:
Combine with a default vertex function:
Use any Graphics, Image, or Graphics3D as a vertex shape:
Use built-in collections for EdgeShapeFunction:
Directed edges including solid arrows:
Labeling (6)
Use any expression as a label:
Control the placement of vertex labels using Placed, including symbolic inside positions:
Place multiple labels using Placed in a wrapper:
Any number of labels can be used:
Place multiple labels using VertexLabels:
Use Placed with symbolic locations to control label placement along an edge:
Use explicit coordinates to place labels:
Place multiple labels using Placed in a wrapper:
Any number of labels can be used:
Place multiple labels using EdgeLabels:
Options (85)
DirectedEdges (2)
By default, a directed graph is generated when giving a list of rules:
Use DirectedEdges->False to interpret rules as undirected edges:
Use DirectedEdge or UndirectedEdge to directly specify whether a graph is directed or not:
EdgeLabels (7)
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 using Placed in a wrapper:
Any number of labels can be used:
Place multiple labels using EdgeLabels:
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:
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 (4)
EdgeStyle can be combined with EdgeShapeFunction:
EdgeShapeFunction has higher priority than EdgeStyle:
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)
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 (14)
Use any expression as a label:
Use Placed with symbolic locations to control label placement, including outside positions:
Symbolic outside corner 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 all labels at the center of vertices:
Place multiple labels using Placed in a wrapper:
Any number of labels can be used:
Place multiple labels using VertexLabels:
Use the argument to Placed to control formatting including Tooltip:
Or StatusArea:
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 (11)
Get a list of built-in collections for VertexShapeFunction:
Use built-in settings for VertexShapeFunction in the "Basic" collection:
Use built-in settings for VertexShapeFunction in the "Rounded" collection:
Use built-in settings for VertexShapeFunction in the "Concave" collection:
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 can be combined with 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)
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:
Applications (4)
Build a graph of a finite mapping:
Draw the graph of a random permutation:
Use Table to set similar annotations for many items:
Properties & Relations (3)
Use VertexCount and EdgeCount to count vertices and edges:
Use VertexList and EdgeList to enumerate vertices and edges in standard order:
Edges and vertices are given in the order they are input:
Compute the AdjacencyMatrix from a graph:
The row-column ordering is given by VertexList:
Possible Issues (2)
Graph objects are atomic raw objects:
Use GraphQ to test whether it is a graph:
Parallel edges are undistinguishable in Graph:
Use EdgeTaggedGraph to assign a unique tag to each edge:
Text
Wolfram Research (2010), Graph, Wolfram Language function, https://reference.wolfram.com/language/ref/Graph.html (updated 2022).
CMS
Wolfram Language. 2010. "Graph." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2022. https://reference.wolfram.com/language/ref/Graph.html.
APA
Wolfram Language. (2010). Graph. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Graph.html