{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# NetworkX" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "NetworkX is a Python language software package for the creation, manipulation, and study of the structure, dynamics, and function of complex networks.\n", "\n", "With NetworkX you can load and store networks in standard and nonstandard data formats, generate many types of random and classic networks, analyze network structure, build network models, design new network algorithms, draw networks, and much more.\n", "\n", "Library documentation: https://networkx.github.io/" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import networkx as nx\n", "G = nx.Graph()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# basic add nodes\n", "G.add_node(1)\n", "G.add_nodes_from([2, 3])" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# add a group of nodes at once\n", "H = nx.path_graph(10)\n", "G.add_nodes_from(H)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# add another graph itself as a node\n", "G.add_node(H)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# add edges using similar methods\n", "G.add_edge(1, 2)\n", "e = (2, 3)\n", "G.add_edge(*e)\n", "G.add_edges_from([(1, 2), (1, 3)])\n", "G.add_edges_from(H.edges())" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# can also remove or clear\n", "G.remove_node(H)\n", "G.clear()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# repeats are ignored\n", "G.add_edges_from([(1,2),(1,3)])\n", "G.add_node(1)\n", "G.add_edge(1,2)\n", "G.add_node('spam') # adds node \"spam\"\n", "G.add_nodes_from('spam') # adds 4 nodes: 's', 'p', 'a', 'm'" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(8, 2)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# get the number of nodes and edges\n", "G.number_of_nodes(), G.number_of_edges()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{2: {}, 3: {}}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# access graph edges\n", "G[1]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{}" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "G[1][2]" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# set an attribute of an edge\n", "G.add_edge(1,3)\n", "G[1][3]['color'] = 'blue'" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1, 2, 0.125)\n", "(2, 1, 0.125)\n", "(3, 4, 0.375)\n", "(4, 3, 0.375)\n" ] } ], "source": [ "FG = nx.Graph()\n", "FG.add_weighted_edges_from([(1, 2, 0.125), (1, 3, 0.75), (2, 4, 1.2), (3, 4, 0.375)])\n", "for n, nbrs in FG.adjacency_iter():\n", " for nbr, eattr in nbrs.items():\n", " data = eattr['weight']\n", " if data < 0.5: print('(%d, %d, %.3f)' % (n, nbr, data))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{'day': 'Friday'}" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# graph attribte\n", "G = nx.Graph(day='Friday')\n", "G.graph" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{'day': 'Monday'}" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# modifying an attribute\n", "G.graph['day'] = 'Monday'\n", "G.graph" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[(1, {'room': 714, 'time': '5pm'}), (3, {'time': '2pm'})]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# node attributes\n", "G.add_node(1, time='5pm')\n", "G.add_nodes_from([3], time='2pm')\n", "G.node[1]['room'] = 714\n", "G.nodes(data=True)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# edge attributes (weight is a special numeric attribute)\n", "G.add_edge(1, 2, weight=4.7)\n", "G.add_edges_from([(3, 4), (4, 5)], color='red')\n", "G.add_edges_from([(1, 2 ,{'color': 'blue'}), (2, 3, {'weight' :8})])\n", "G[1][2]['weight'] = 4.7\n", "G.edge[1][2]['weight'] = 4" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.5" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# directed graph\n", "DG = nx.DiGraph()\n", "DG.add_weighted_edges_from([(1, 2 ,0.5), (3, 1, 0.75)])\n", "DG.out_degree(1, weight='weight')" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1.25" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DG.degree(1, weight='weight')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[2]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DG.successors(1)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[3]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DG.predecessors(1)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# convert to undirected graph\n", "H = nx.Graph(G)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": [ "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\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# basic graph drawing capability\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "nx.draw(G)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.9" } }, "nbformat": 4, "nbformat_minor": 0 }