-
Notifications
You must be signed in to change notification settings - Fork 159
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Giancarlo Perrone
committed
Apr 11, 2019
1 parent
2c13d3f
commit aa71a2a
Showing
1 changed file
with
325 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,325 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 24, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"from pyvis.network import Network" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### Basic Example" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 25, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/html": [ | ||
"\n", | ||
" <iframe\n", | ||
" width=\"500px\"\n", | ||
" height=\"500px\"\n", | ||
" src=\"example.html\"\n", | ||
" frameborder=\"0\"\n", | ||
" allowfullscreen\n", | ||
" ></iframe>\n", | ||
" " | ||
], | ||
"text/plain": [ | ||
"<IPython.lib.display.IFrame at 0x1f0e3ec32b0>" | ||
] | ||
}, | ||
"execution_count": 25, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"g = Network(notebook=True)\n", | ||
"g.add_nodes(range(5))\n", | ||
"g.add_edges([\n", | ||
" (0, 2),\n", | ||
" (0, 3),\n", | ||
" (0, 4),\n", | ||
" (1, 1),\n", | ||
" (1, 3),\n", | ||
" (1, 2)\n", | ||
"])\n", | ||
"g.show(\"example.html\")" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### Basic NetworkX example" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 26, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"import networkx as nx" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 27, | ||
"metadata": { | ||
"scrolled": false | ||
}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/html": [ | ||
"\n", | ||
" <iframe\n", | ||
" width=\"500px\"\n", | ||
" height=\"500px\"\n", | ||
" src=\"example.html\"\n", | ||
" frameborder=\"0\"\n", | ||
" allowfullscreen\n", | ||
" ></iframe>\n", | ||
" " | ||
], | ||
"text/plain": [ | ||
"<IPython.lib.display.IFrame at 0x1f0e3edc198>" | ||
] | ||
}, | ||
"execution_count": 27, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"nxg = nx.random_tree(20)\n", | ||
"g.from_nx(nxg)\n", | ||
"g.show(\"example.html\")" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### Disabling Physics interaction" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 28, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/html": [ | ||
"\n", | ||
" <iframe\n", | ||
" width=\"500px\"\n", | ||
" height=\"500px\"\n", | ||
" src=\"example.html\"\n", | ||
" frameborder=\"0\"\n", | ||
" allowfullscreen\n", | ||
" ></iframe>\n", | ||
" " | ||
], | ||
"text/plain": [ | ||
"<IPython.lib.display.IFrame at 0x1f0e3e9d588>" | ||
] | ||
}, | ||
"execution_count": 28, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"g.toggle_physics(False)\n", | ||
"g.show(\"example.html\")" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### Explicit coordinates to layout nodes" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 34, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/html": [ | ||
"\n", | ||
" <iframe\n", | ||
" width=\"500px\"\n", | ||
" height=\"500px\"\n", | ||
" src=\"example.html\"\n", | ||
" frameborder=\"0\"\n", | ||
" allowfullscreen\n", | ||
" ></iframe>\n", | ||
" " | ||
], | ||
"text/plain": [ | ||
"<IPython.lib.display.IFrame at 0x1f0e4f15320>" | ||
] | ||
}, | ||
"execution_count": 34, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"g = Network(notebook=True)\n", | ||
"g.add_nodes([1,2,3],\n", | ||
" value=[10, 100, 400],\n", | ||
" title=[\"I am node 1\", \"node 2 here\", \"and im node 3\"],\n", | ||
" x=[21.4, 21.4, 21.4], y=[100.2, 223.54, 32.1],\n", | ||
" label=[\"NODE 1\", \"NODE 2\", \"NODE 3\"],\n", | ||
" color=[\"#00ff1e\", \"#162347\", \"#dd4b39\"])\n", | ||
"g.show(\"example.html\")" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### Full Game of Thrones example" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 36, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/html": [ | ||
"\n", | ||
" <iframe\n", | ||
" width=\"100%\"\n", | ||
" height=\"750px\"\n", | ||
" src=\"example.html\"\n", | ||
" frameborder=\"0\"\n", | ||
" allowfullscreen\n", | ||
" ></iframe>\n", | ||
" " | ||
], | ||
"text/plain": [ | ||
"<IPython.lib.display.IFrame at 0x1f0e4ec3dd8>" | ||
] | ||
}, | ||
"execution_count": 36, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"import pandas as pd\n", | ||
"\n", | ||
"got_net = Network(notebook=True, height=\"750px\", width=\"100%\", bgcolor=\"#222222\", font_color=\"white\")\n", | ||
"\n", | ||
"# set the physics layout of the network\n", | ||
"got_net.barnes_hut()\n", | ||
"got_data = pd.read_csv(\"https://www.macalester.edu/~abeverid/data/stormofswords.csv\")\n", | ||
"\n", | ||
"sources = got_data['Source']\n", | ||
"targets = got_data['Target']\n", | ||
"weights = got_data['Weight']\n", | ||
"\n", | ||
"edge_data = zip(sources, targets, weights)\n", | ||
"\n", | ||
"for e in edge_data:\n", | ||
" src = e[0]\n", | ||
" dst = e[1]\n", | ||
" w = e[2]\n", | ||
"\n", | ||
" got_net.add_node(src, src, title=src)\n", | ||
" got_net.add_node(dst, dst, title=dst)\n", | ||
" got_net.add_edge(src, dst, value=w)\n", | ||
"\n", | ||
"neighbor_map = got_net.get_adj_list()\n", | ||
"\n", | ||
"# add neighbor data to node hover data\n", | ||
"for node in got_net.nodes:\n", | ||
" node[\"title\"] += \" Neighbors:<br>\" + \"<br>\".join(neighbor_map[node[\"id\"]])\n", | ||
" node[\"value\"] = len(neighbor_map[node[\"id\"]]) # this value attrribute for the node affects node size\n", | ||
"\n", | ||
"got_net.show(\"example.html\")" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### Experimenting with options UI\n", | ||
"Scroll down underneath the graph to play around with the physics settings to acheive optimal layout and behavior. You can use the generate options button to display the JSON representation of the configuration." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 39, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/html": [ | ||
"\n", | ||
" <iframe\n", | ||
" width=\"100%\"\n", | ||
" height=\"750px\"\n", | ||
" src=\"example.html\"\n", | ||
" frameborder=\"0\"\n", | ||
" allowfullscreen\n", | ||
" ></iframe>\n", | ||
" " | ||
], | ||
"text/plain": [ | ||
"<IPython.lib.display.IFrame at 0x1f0e541e390>" | ||
] | ||
}, | ||
"execution_count": 39, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"got_net.show_buttons(filter_=\"physics\")\n", | ||
"got_net.show(\"example.html\")" | ||
] | ||
} | ||
], | ||
"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.7.1" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 2 | ||
} |