Most examples work across multiple plotting backends, this example is also available for:
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
hv.extension('matplotlib')
hv.output(fig='svg')
# 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)
(as_graph * labels).opts(
opts.Graph(directed=True, fig_size=300, node_size=8, bgcolor='gray',
edge_color='white', edge_linewidth=1, arrowhead_length=0.01,
node_color='white', xaxis=None, yaxis=None),
opts.Labels(xoffset=-0.04, yoffset=0.03, show_legend=False))