Directed airline routes

Most examples work across multiple plotting backends, this example is also available for:

In [1]:
import numpy as np
import networkx as nx
import holoviews as hv
from holoviews import opts

from holoviews.element.graphs import layout_nodes
from bokeh.sampledata.airport_routes import routes, airports



Declare data

In [2]:
# Create dataset indexed by AirportID and with additional value dimension
airports = hv.Dataset(airports, ['AirportID'], ['Name', 'IATA', 'City'])

label = 'Alaska Airline Routes'

# Select just Alaska Airline routes
as_graph = hv.Graph((routes[routes.Airline=='AS'], airports), ['SourceID', "DestinationID"], 'Airline', label=label)

as_graph = layout_nodes(as_graph, layout=nx.layout.fruchterman_reingold_layout)
labels = hv.Labels(as_graph.nodes, ['x', 'y'], ['IATA', 'City'], label=label)


In [3]:
(as_graph * labels).opts(
    opts.Graph(directed=True, node_size=8, padding=0.1, bgcolor='gray',
               edge_color='white', edge_linewidth=1, arrowhead_length=0.01,
               node_color='white', fig_size=300, xaxis=None, yaxis=None),
    opts.Labels(xoffset=-0.04, yoffset=0.03, show_legend=False))

Download this notebook from GitHub (right-click to download).