North American Airline Reachability Network

Source Notebook

A directed network graph where edges represent airline travel-time reachability between metropolitan areas across North America

Details

Edges indicate whether it is possible to travel between two cities by air within a specified time threshold, including layovers. In this sense, the network captures whether one city can be reached from another within a given travel time. Because travel times can differ by direction (for example, due to headwinds), the network is asymmetric.
The network consists of 456 vertices (cities) and 71,959 directed edges representing time-constrained airline reachability.
In addition to the network structure, the dataset includes attributes for each node, such as node name, metropolitan population, latitude, and longitude.

(456 vertices, 71959 edges)

Examples

Basic Examples (2) 

Retrieve the graph:

In[1]:=
ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]
Out[1]=

Plot the graph:

In[2]:=
GraphPlot[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]]
Out[2]=

Scope & Additional Elements (10) 

Retrieve the adjacency matrix:

In[3]:=
ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Adjacency Matrix"]
Out[3]=

Retrieve the node positions:

In[4]:=
ListPlot[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Position"], Axes -> False]
Out[4]=

Retrieve geographic positions and generate a GeoListPlot:

In[5]:=
GeoListPlot[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "GeoPosition"]]
Out[5]=

Plot the graph using the adjacency matrix:

In[6]:=
GraphPlot[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Adjacency Matrix"], Sequence[
 GraphLayout -> "GravityEmbedding", EdgeStyle -> Directive[Thin, 
Opacity[0.4]], VertexSize -> 0.5]]
Out[6]=

Using node names, compute the number of airports per state:

In[7]:=
Counts[StringTake[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Node name"], -2]]
Out[7]=

List the names of the first 50 cities:

In[8]:=
ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Node name"][[;; 50]]
Out[8]=

Plot a histogram of city populations:

In[9]:=
Histogram[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Population"], Sequence[
 500, FrameLabel -> {"Population"}, PlotTheme -> "Detailed"]]
Out[9]=

Generate the GeoBubbleChart using population as bubble size:

In[10]:=
GeoBubbleChart[Thread[Thread[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "GeoPosition"]] -> ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Population"]/30000]]
Out[10]=

Identify the cities with the largest populations:

In[11]:=
TakeLargestBy[Transpose[{ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Node name"], ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Population"]}], Last, 10]
Out[11]=

Identify the nodes with the highest vertex degree:

In[12]:=
TakeLargestBy[Transpose[{ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Node name"], VertexDegree[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]]}], Last, 10]
Out[12]=

Visualizations (4) 

Plot the graph using a different GraphLayout:

In[13]:=
GraphPlot[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)], GraphLayout -> "BalloonEmbedding", Sequence[
 EdgeStyle -> Directive[Thin, 
Opacity[0.05]], VertexSize -> 3]]
Out[13]=

Plot the graph with vertex size proportional to population:

In[14]:=
GraphPlot[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)], VertexCoordinates -> Thread[Range[
Length[
ResourceData[
ResourceObject[
EvaluationNotebook[]], "Position"]]] -> ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Position"]], EdgeStyle -> Directive[Thin, 
Opacity[0.05]], VertexSize -> Thread[Range[
Length[
ResourceData[
ResourceObject[
EvaluationNotebook[]], "Position"]]] -> ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Population"]/30000]]
Out[14]=

Plot the graph highlighting nodes with the highest vertex degree:

In[15]:=
largestVertexDegree = Flatten[PositionLargest[VertexDegree[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]], 10]];
In[16]:=
GraphPlot[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)], VertexCoordinates -> Thread[Range[
Length[
ResourceData[
ResourceObject[
EvaluationNotebook[]], "Position"]]] -> ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Position"]], EdgeStyle -> Directive[Thin, 
Opacity[0.05]], VertexSize -> Thread[largestVertexDegree -> (VertexDegree[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]][[largestVertexDegree]])/5]]
Out[16]=

Generate a GeoGraphPlot:

In[17]:=
GeoGraphPlot[EdgeList[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]] /. Thread[Range[Length[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Position"]]] -> ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "GeoPosition"]], EdgeStyle -> Directive[Thin, 
Opacity[0.05]]]
Out[17]=

Analysis (8) 

Compute the vertex count:

In[18]:=
VertexCount[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]]
Out[18]=

Compute the edge count:

In[19]:=
EdgeCount[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]]
Out[19]=

Compute the graph diameter:

In[20]:=
GraphDiameter[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]]
Out[20]=

Compute the graph radius:

In[21]:=
GraphRadius[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]]
Out[21]=

Plot a histogram of the vertex degree distribution:

In[22]:=
Histogram[VertexDegree[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]], Sequence[
 200, FrameLabel -> {"VertexDegree"}, PlotTheme -> "Detailed"]]
Out[22]=

Compute pairwise distances between nodes using GeoDistance:

In[23]:=
distance = QuantityMagnitude[(GeoDistance @@@ (List @@@ EdgeList[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]] /. Thread[Range[VertexCount[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]]] -> ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "GeoPosition"]]))];

Plot a histogram of the distances:

In[24]:=
Histogram[distance, 2000, Sequence[
 FrameLabel -> {"Distance(km)"}, PlotTheme -> "Detailed", PlotRange -> All]]
Out[24]=

Compute pairwise geographic distances using GeoDistance:

In[25]:=
distance = QuantityMagnitude[(GeoDistance @@@ (List @@@ EdgeList[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]] /. Thread[Range[VertexCount[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]]] -> ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "GeoPosition"]]))];

Identify the most distant city pairs:

In[26]:=
ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Node name"][[#]] & /@ EdgeList[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]][[PositionLargest[distance], 1]]
Out[26]=

Visualize the most distant city pairs in a plot:

In[27]:=
GraphPlot[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)], VertexCoordinates -> Thread[Range[
Length[
ResourceData[
ResourceObject[
EvaluationNotebook[]], "Position"]]] -> ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Position"]], EdgeStyle -> Directive[Thin, 
Opacity[0.05]], VertexSize -> Thread[EdgeList[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]][[PositionLargest[distance], 1]] -> 300], VertexStyle -> Red]
Out[27]=

Identify the closest city pairs:

In[28]:=
ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Node name"][[#]] & /@ EdgeList[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]][[PositionSmallest[distance], 1]]
Out[28]=

Visualize the closest city pairs in a plot:

In[29]:=
GraphPlot[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)], VertexCoordinates -> Thread[Range[
Length[
ResourceData[
ResourceObject[
EvaluationNotebook[]], "Position"]]] -> ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Position"]], EdgeStyle -> Directive[Thin, 
Opacity[0.05]], VertexSize -> Thread[EdgeList[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]][[PositionSmallest[distance], 1]] -> 300], VertexStyle -> Red]
Out[29]=

Detect vertex communities:

In[30]:=
communities = FindGraphCommunities[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)]];

Plot the communities in their geographic positions:

In[31]:=
GraphPlot[ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\)], VertexCoordinates -> Thread[Range[
Length[
ResourceData[
ResourceObject[
EvaluationNotebook[]], "Position"]]] -> ResourceData[\!\(\*
TagBox["\"\<North American Airline Reachability Network\>\"",
#& ,
BoxID -> "ResourceTag-North American Airline Reachability Network-Input",
AutoDelete->True]\), "Position"]], Sequence[
 EdgeStyle -> Directive[Thin, 
Opacity[0.05]], VertexSize -> 50], VertexStyle -> Flatten[(Thread[#] & /@ Thread[communities -> (
Map[
ColorData[114], 
Range[
Length[communities]]])]), 1]]
Out[31]=

Wolfram Discrete Computation, "North American Airline Reachability Network" from the Wolfram Data Repository (2026)  

Data Resource History

Source Metadata

Data Downloads

Publisher Information