{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "> This is one of the 100 recipes of the [IPython Cookbook](http://ipython-books.github.io/), the definitive guide to high-performance scientific computing and data science in Python.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 6.4. Visualizing a NetworkX graph in the IPython notebook with d3.js" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Let's import the packages." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import json\n", "import numpy as np\n", "import networkx as nx\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. We load a famous social graph published in 1977, called **Zachary's Karate club graph**. This graph represents the friendships between members of a Karate Club. The club's president and the instructor were involved in a dispute, resulting in a split-up of this group. Here, we simply display the graph with matplotlib (using `networkx.draw()`)." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": [ "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\n", "Y4wp2f8DKwE2SDXe644AAAAASUVORK5CYII=\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "g = nx.karate_club_graph()\n", "plt.figure(figsize=(6,4));\n", "nx.draw(g)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3. Now, we're going to display this graph in the notebook with d3.js. The first step is to bring this graph to Javascript. We choose here to export the graph in JSON. Note that d3.js generally expects each edge to be an object with a `source` and a `target`. Also, we specify which side each member has taken (`club` attribute)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from networkx.readwrite import json_graph\n", "data = json_graph.node_link_data(g)\n", "with open('graph.json', 'w') as f:\n", " json.dump(data, f, indent=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "4. The next step is to create an HTML object that will contain the visualization. Here, we create a `
` element in the notebook. We also specify a few CSS styles for nodes and links (also called edges)." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%html\n", "
\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "5. The last step is trickier. We write the Javascript code to load the graph from the JSON file, and display it with d3.js. Knowing the basics of d3.js is required here (see the documentation of d3.js). We also give detailled explanations in the code comments below. (http://d3js.org)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "application/javascript": [ "// We load the d3.js library from the Web.\n", "require.config({paths: {d3: \"http://d3js.org/d3.v3.min\"}});\n", "require([\"d3\"], function(d3) {\n", " // The code in this block is executed when the \n", " // d3.js library has been loaded.\n", " \n", " // First, we specify the size of the canvas containing\n", " // the visualization (size of the
element).\n", " var width = 300,\n", " height = 300;\n", "\n", " // We create a color scale.\n", " var color = d3.scale.category10();\n", "\n", " // We create a force-directed dynamic graph layout.\n", " var force = d3.layout.force()\n", " .charge(-120)\n", " .linkDistance(30)\n", " .size([width, height]);\n", "\n", " // In the
element, we create a graphic\n", " // that will contain our interactive visualization.\n", " var svg = d3.select(\"#d3-example\").select(\"svg\")\n", " if (svg.empty()) {\n", " svg = d3.select(\"#d3-example\").append(\"svg\")\n", " .attr(\"width\", width)\n", " .attr(\"height\", height);\n", " }\n", " \n", " // We load the JSON file.\n", " d3.json(\"graph.json\", function(error, graph) {\n", " // In this block, the file has been loaded\n", " // and the 'graph' object contains our graph.\n", " \n", " // We load the nodes and links in the force-directed\n", " // graph.\n", " force.nodes(graph.nodes)\n", " .links(graph.links)\n", " .start();\n", "\n", " // We create a SVG element for each link\n", " // in the graph.\n", " var link = svg.selectAll(\".link\")\n", " .data(graph.links)\n", " .enter().append(\"line\")\n", " .attr(\"class\", \"link\");\n", "\n", " // We create a SVG element for each node\n", " // in the graph, and we specify a few attributes.\n", " var node = svg.selectAll(\".node\")\n", " .data(graph.nodes)\n", " .enter().append(\"circle\")\n", " .attr(\"class\", \"node\")\n", " .attr(\"r\", 5) // radius\n", " .style(\"fill\", function(d) {\n", " // The node color depends on the club.\n", " return color(d.club); \n", " })\n", " .call(force.drag);\n", "\n", " // The name of each node is the node number.\n", " node.append(\"title\")\n", " .text(function(d) { return d.id; });\n", "\n", " // We bind the positions of the SVG elements\n", " // to the positions of the dynamic force-directed graph,\n", " // at each time step.\n", " force.on(\"tick\", function() {\n", " link.attr(\"x1\", function(d) { return d.source.x; })\n", " .attr(\"y1\", function(d) { return d.source.y; })\n", " .attr(\"x2\", function(d) { return d.target.x; })\n", " .attr(\"y2\", function(d) { return d.target.y; });\n", "\n", " node.attr(\"cx\", function(d) { return d.x; })\n", " .attr(\"cy\", function(d) { return d.y; });\n", " });\n", " });\n", "});" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%javascript\n", "// We load the d3.js library from the Web.\n", "require.config({paths: {d3: \"http://d3js.org/d3.v3.min\"}});\n", "require([\"d3\"], function(d3) {\n", " // The code in this block is executed when the \n", " // d3.js library has been loaded.\n", " \n", " // First, we specify the size of the canvas containing\n", " // the visualization (size of the
element).\n", " var width = 300,\n", " height = 300;\n", "\n", " // We create a color scale.\n", " var color = d3.scale.category10();\n", "\n", " // We create a force-directed dynamic graph layout.\n", " var force = d3.layout.force()\n", " .charge(-120)\n", " .linkDistance(30)\n", " .size([width, height]);\n", "\n", " // In the
element, we create a graphic\n", " // that will contain our interactive visualization.\n", " var svg = d3.select(\"#d3-example\").select(\"svg\")\n", " if (svg.empty()) {\n", " svg = d3.select(\"#d3-example\").append(\"svg\")\n", " .attr(\"width\", width)\n", " .attr(\"height\", height);\n", " }\n", " \n", " // We load the JSON file.\n", " d3.json(\"graph.json\", function(error, graph) {\n", " // In this block, the file has been loaded\n", " // and the 'graph' object contains our graph.\n", " \n", " // We load the nodes and links in the force-directed\n", " // graph.\n", " force.nodes(graph.nodes)\n", " .links(graph.links)\n", " .start();\n", "\n", " // We create a SVG element for each link\n", " // in the graph.\n", " var link = svg.selectAll(\".link\")\n", " .data(graph.links)\n", " .enter().append(\"line\")\n", " .attr(\"class\", \"link\");\n", "\n", " // We create a SVG element for each node\n", " // in the graph, and we specify a few attributes.\n", " var node = svg.selectAll(\".node\")\n", " .data(graph.nodes)\n", " .enter().append(\"circle\")\n", " .attr(\"class\", \"node\")\n", " .attr(\"r\", 5) // radius\n", " .style(\"fill\", function(d) {\n", " // The node color depends on the club.\n", " return color(d.club); \n", " })\n", " .call(force.drag);\n", "\n", " // The name of each node is the node number.\n", " node.append(\"title\")\n", " .text(function(d) { return d.id; });\n", "\n", " // We bind the positions of the SVG elements\n", " // to the positions of the dynamic force-directed graph,\n", " // at each time step.\n", " force.on(\"tick\", function() {\n", " link.attr(\"x1\", function(d) { return d.source.x; })\n", " .attr(\"y1\", function(d) { return d.source.y; })\n", " .attr(\"x2\", function(d) { return d.target.x; })\n", " .attr(\"y2\", function(d) { return d.target.y; });\n", "\n", " node.attr(\"cx\", function(d) { return d.x; })\n", " .attr(\"cy\", function(d) { return d.y; });\n", " });\n", " });\n", "});" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When we execute this cell, the HTML object created in the previous cell is updated. The graph is animated and interactive: we can click on nodes, see their labels, and move them within the canvas." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> You'll find all the explanations, figures, references, and much more in the book (to be released later this summer).\n", "\n", "> [IPython Cookbook](http://ipython-books.github.io/), by [Cyrille Rossant](http://cyrille.rossant.net), Packt Publishing, 2014 (500 pages)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.2" } }, "nbformat": 4, "nbformat_minor": 0 }