You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sitc/sna/1_First_Steps.ipynb

1302 lines
164 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": "skip"
},
"tags": []
},
"source": [
"![](images/EscUpmPolit_p.gif \"UPM\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"# Course Notes for Learning Intelligent Systems"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"Department of Telematic Engineering Systems, Universidad Politécnica de Madrid, © Carlos A. Iglesias"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## [Introduction to Network Analysis](0_Intro_Network_Analysis.ipynb)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"# Table of Contents\n",
"\n",
"* [Installation](#Installation)\n",
"* [First steps](#First-steps)\n",
"* [Reading Data from a File](#Reading-Data-from-a-File)"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"# Installation\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"For installing **networkx** we can use **conda** or **pip**: _'conda install networkx'_. "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"It could be good to update first the packages: _'conda update --all'_."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# First steps\n",
"Create an empty graph with no nodes"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"import networkx as nx"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [],
"source": [
"import warnings\n",
"warnings.simplefilter(action='ignore', category=FutureWarning)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"G = nx.Graph()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.number_of_nodes(G)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Add a node"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"G.add_node('1')"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.number_of_nodes(G)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"NodeView(('1',))"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G.nodes"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"If you add edges of nodes that has not been added, network will add the nodes automatically."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"G.add_edge('2', '3')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"NodeView(('1', '2', '3'))"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G.nodes()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"For more info about Graph.nodes() see [Networkx manual](https://networkx.github.io/documentation/networkx-2.1/reference/classes/generated/networkx.Graph.nodes.html)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['1', '2', '3']\n"
]
}
],
"source": [
"print(G.nodes)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"EdgeView([('2', '3')])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G.edges"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[('2', '3')]\n"
]
}
],
"source": [
"print(G.edges)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Building a simple graph"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"import networkx as nx"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"G = nx.Graph()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"G.add_edges_from([('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'D')]) # using a list of edge tuples"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6GElEQVR4nO3deVxU5eLH8c+wuAXirnGzXEgTLMsF3JUxLZdr12s/Q3FHw93UXAp38VrZdjPLTL3drla2mGlmaYKSIoyaQG6JW2mkZRqIC7LM748pbt5kERjODPN9v169lGbOma/31fV85znP8xyT1Wq1IiIiIi7LzegAIiIiYiyVARERERenMiAiIuLiVAZERERcnMqAiIiIi1MZEBERcXEqAyIiIi7OozBvysnJISUlBW9vb0wmk70ziYiISAmwWq1cunQJX19f3Nzy/v5fqDKQkpJC3bp1SyyciIiIlJ7Tp09zxx135Pl6ocqAt7d37skqV65cMslERETErtLS0qhbt27udTwvhSoDv98aqFy5ssqAiIiIkynoFr8mEIqIiLg4lQEREREXpzIgIiLi4lQGREREXJzKgIiIiItTGRAREXFxKgMiIiIuTmVARETExakMiIiIuDiVARERERenMiAiIuLiVAZERERcnMqAiIiIi1MZEBERcXEqAyIiIi5OZUBERMTFeRgdQETEIWWmQ/oxyM4A9/Lg5QeeXkanErELlQERkd+lHoLkZZDyGaSfAKx/eNEEXg3AtwfcPQp8/I1KKVLiVAZERNJPgiUczm4FkwdYs27yJiukH4fk1+HoEqjTFQLfAK/6pR5XpKRpzoCIuLZjK2CTP5yLtv180yLwB7+/fi7adtyxFfbNJ1IKVAZExHUdWAiWkZB9reAS8L+sWbbjLCNt5xFxYioDIuKajq2ApJklc66kmXB8ZcmcS8QAmjMgIq4n/STsG/+nf/3WDhi2/L8/l/eEarfBvXWh5/0wrBN4V8zjnHvHQW2z5hCIU1IZEBHXYwmHnLxvC8x/FOrXhMxsOPsrbD8MT6yGFzfDhilw3503OSgny3Ze8xa7xRaxF5UBEXEtqYdsqwby0b0ZtGzw35+fegSiDkKv56H3C3B4MVQs9z8HWbNs5009DD5NSj63iB1pzoCIuJbkZbblg7fIHACz/gbfnYfVO/N4k8nDtvRQxMmoDIiIa0n57NZXDvxmUHvbr1u+yeMN1ixI2Vy0XCIGUhkQEdeReem3nQWL5o7q4FMJjv+Uz5vSj9u2MhZxIioDIuI60o9z4xbDt86rPFy6mt87rLZnGog4EZUBEXEd2RnFPkV6Rj7LC0vwc0RKk8qAiLgO9/LFOvzML5B6Bfxq2/dzREqbyoCIuA4vP8BU5MP/89sqgofuy+9dpt8+R8R5qAyIiOvw9LI9hrgIog7CgvW2zYhC2+bzRq+Gts8RcSLadEhEXItvD9teAPksL9ycCEdSICsbzqXZisDWA3BXDdsOhBX+d8Oh35k8wLe7fXKL2JHKgIi4lrtHwdEl+b5l9oe2X8t5QDUvuPcOeHlgAc8mAFvBuHt0yWUVKSUqAyLiWnz8oU5XOBf9p9GBoZ1s/xSJyQNqB2srYnFKmjMgIq4n8A1wK7nvQlYrWE0etvOKOCGVARFxPV71oUX+twpuhckECzbX4syvniV2TpHSpDIgIq7JbwTcF1kip0qpOY4V0VYCAwOxWCwlck6R0qQyICKuq2kEBL6J1b0CWdm3eKzJA9wrQNAKfLsuwWKxcNddd9GpUyfee+89u8QVsReVARFxbX4jWHdtAVEHf/u5oMcb//567WDoeQgahgFQp04doqOjefTRR+nfvz+zZs0iJyfHfrlFSpDKgIi4tOvXr/Pk3KW8kfx36HnQtjTwpjsV/raz4N2jbSXAvMU29+APKlSowNtvv82iRYtYuHAh/fr14/Lly6X2ZxEpKi0tFBGXtmLFCr777js2bdpkW3bY8hXbC5nptqcPZmfYnjXg5VeonQVNJhMzZsygSZMmhIaG0qFDBz755BPq1q1r5z+JSNGZrFZrgc/zTEtLw8fHh9TUVCpXrlwauURE7O7KlSs0bNiQbt268e9//7vEz5+YmEjv3r3JyMjgk08+ISgoqMQ/QyQ/hb1+6zaBiLispUuXcv78eebMmWOX8zdr1gyLxULDhg3p1KkT77zzjl0+R6S4VAZExCWlpqbyzDPPMHLkSBo0KNrDiwqjdu3aREVF8dhjjxEaGkpERIQmForD0ZwBEXFJL730EleuXGHmzJl2/6zy5cvz1ltvERAQwIwZMzh8+DBvv/02Xl56uqE4Bo0MiIjLOX/+PC+88ALjxo3D19e3VD7TZDIxbdo01q9fz9atW2nfvj3ff/99qXy2SEFUBkTE5TzzzDOYTCamT59e6p/du3dvYmNj+fXXXwkMDGT37t2lnkHkf6kMiIhL+eGHH1i6dCmTJ0+mRo0ahmS49957sVgs+Pn50blzZ1avXm1IDpHfqQyIiEuJjIykUqVKTJ482dActWrVYtu2bQwYMIBBgwbx1FNPaWKhGEYTCEXEZZw4cYIVK1bwj3/8wyH2TClfvjyrVq2iadOmTJ06lcOHD7N69WpNLJRSp5EBEXEZc+fOpWbNmowdO9boKLlMJhNTpkxhw4YNbNu2jXbt2vHdd98ZHUtcjMqAiLiEgwcPsnr1ambNmkWlSpWMjvMnvXr1Yvfu3aSlpREYGEhsbKzRkcSFqAyIiEuYPXs2d911F2FhYUZHyVPTpk2xWCw0btyY4OBg3n77baMjiYtQGRCRMm/v3r2sW7eOefPmUa5cOaPj5KtmzZp8+eWXDBw4kCFDhjB9+nSys7ONjiVlnCYQikiZN3PmzNynCDqDcuXKsWLFCgICAnInFq5ZswZvb2+jo0kZpZEBESnTduzYwRdffMGCBQtwd3c3Ok6hmUwmJk+ezMaNG9m+fTvt2rXj1KlTRseSMkplQETKLKvVSkREBC1atODvf/+70XGKpEePHuzevZv09HQCAwPZuXOn0ZGkDFIZEJEy6/PPP2fXrl1ERkZiMpmMjlNkAQEBWCwWmjRpgtls5q233jI6kpQxKgMiUibl5OQQERFBhw4deOihh4yOU2w1atRg69atDBkyhGHDhjF16lRNLJQSowmEIlImrVu3jv379xMTE+PUowJ/VK5cOZYvX07Tpk2ZPHkyR44cYc2aNQ6xm6I4N5PVarUW9Ka0tDR8fHxITU3Vf3Qi4vCysrK49957qVevHps3bzY6jl18/vnnPPbYY9StW5cNGzbQoEEDoyOJAyrs9Vu3CUSkzFm9ejVHjhwhMjLS6Ch28/DDDxMXF8e1a9cICgriq6++MjqSODGVAREpUzIyMpg7dy59+/alRYsWRsexqyZNmhAfH0/Tpk3p0qULq1atMjqSOCmVAREpU1asWMHp06eZP3++0VFKRfXq1dmyZQvDhg0jLCyMKVOmaGKh3DJNIBSRMuPKlStERkYycOBA/P39jY5Tajw9PVm2bBkBAQFMmjSJI0eO8O6772qOlxSaRgZEpMx49dVX+eWXX5g7d67RUUqdyWRiwoQJbN68mV27dtGmTRtOnDhhdCxxEioDIlImpKam8swzzzBy5Ejq169vdBzDdOvWjbi4OK5fv05gYCA7duwwOpI4AZUBESkTXnzxRa5evUpERITRUQx3zz33EB8fT7NmzXjwwQd58803jY4kDk5lQESc3s8//8yLL77I+PHj8fX1NTqOQ6hWrRqff/45I0aM4PHHH2fSpElkZWUZHUsclCYQiojTe/bZZzGZTEyfPt3oKA7F09OT119/naZNmzJx4kSOHDnCe++9h4+Pj9HRxMFoZEBEnNqZM2d49dVXmTJlCtWrVzc6jkMaO3YsmzdvJi4ujtatW3Ps2DGjI4mDURkQEacWGRmJl5cXkyZNMjqKQ+vatStxcXFkZ2cTFBREdHS00ZHEgagMiIjTOn78OCtXrmTGjBlaU18IjRs3Jj4+nubNm9OtWzeWL19udCRxECoDIuK05s6dS61atRg7dqzRUZxG1apV+eyzzwgPDyc8PJwJEyZoYqF
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"nx.draw_networkx(G, node_color='orange')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Undirected and directed graphs"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Now we create an undirected graph using the class **Graph**."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"U = nx.Graph()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"U.add_edge('A', 'B')"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"U.add_edge('A', 'C')"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[0, 1, 1],\n",
" [1, 0, 0],\n",
" [1, 0, 0]])"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.adjacency_matrix(U).todense()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[0, 1, 1],\n",
" [1, 0, 0],\n",
" [1, 0, 0]])"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.to_scipy_sparse_array(U).todense()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"nx.draw_networkx(U, node_color='c')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"We use the class **DiGraph** for Directed Graphs as follows."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"D = nx.DiGraph()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"D.add_edge('B', 'A')"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[0, 1],\n",
" [0, 0]])"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.adjacency_matrix(D).todense() "
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"nx.draw_networkx(D, node_color='pink')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Weighted graphs"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"W = nx.Graph()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"W.add_edge('A', 'B', weight = 2)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"W.add_weighted_edges_from([('A', 'C', 1), ('A', 'D', 3), ('B', 'D', 4)])"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1tklEQVR4nO3deVyU9d7G8WsAFZRtxCVRQFzQ1MpKj9lmloD7rmUuZWoe1x63zDSfjuVTnbbTrqWVdrLFMnMXNMsyTdPsWJi4oCJjZTAIIhjLPH+QHjPZZ+ae5fN+vXil3vfMXJxT3hczv/v7M9lsNpsAAIDX8jE6AAAAMBZlAAAAL0cZAADAy1EGAADwcpQBAAC8HGUAAAAvRxkAAMDL+ZXnpKKiIlksFgUFBclkMjk6EwAAsAObzabs7GyFh4fLx6fkn//LVQYsFosiIiLsFg4AADhPamqqGjVqVOLxcpWBoKCgC08WHBxsn2QAAMChsrKyFBERceE6XpJylYHzHw0EBwdTBgAAcDNlfcTPAkIAALwcZQAAAC9HGQAAwMtRBgAA8HKUAQAAvBxlAAAAL0cZAADAy1EGAADwcpQBAAC8HGUAAAAvRxkAAMDLUQYAAPBylAEAALwcZQAAAC9HGQAAwMtRBgAA8HJ+RgewpzMFBTqUm6tzNptqmExqFhCgQD+P+hYBALA7t79SJuXkaIHFonXp6TqSlyfbRcdMkpr4+6t7WJj+Hh6uVrVqGRUTAACXZbLZbLayTsrKylJISIhOnz6t4OBgZ+QqU0pursYmJyvRapWfpIJSzj1/PNZs1sKYGEUHBDgnJAAABirv9dst1wwssljUatcubbFaJZVeBC4+vsVqVatdu7TIYnFoPgAA3InblYH5x45pTHKy8oqKyiwBlyqQlFdUpDHJyZp/7Jgj4gEA4Hbcqgwsslg0JyXFLs81JyVFi0+etMtzAQDgztxmAWFKbq4mHTpU+klpadL770u7d0u//SZVqyZFR0u33Sb16iXVqPGn0ycePKjbQ0NZQwAA8GpuUwbGJieroKio5BO2b5f+8Y/iAhAXV1wC8vOlH36QFi6Ujh6Vpk//00MKioo0NjlZCddc49jwAAC4MLcoA0k5OUr8Y7HgZZ08KT32mFS/vvTcc1JY2H+P9etX/I7B9u1/eViBpESrVftzcnQltx0CALyUW6wZWGCxlN5a3n9fys2VZsz4cxE4r2FDaeDAyz7UT9Jr3F0AAPBiblEG1qWnl37nwNdfS+HhUps2FX7uAknr09MrGw0AALfn8mUgu6BAR/LySj4hJ6d4sWB0dKVf43Bens4UVPRGRQAAPIPLl4HDubkqdUTi2bPF/6xZs9KvYZN0KDe30o8HAMCduXwZOFfWtOTzJeB8KXDU6wAA4KFcvgzUMJlKP6FWLalOHamKw4jKfB0AADyUy5eBZgEBKvMyfcMNksUi/fhjpV7D9MfrAADgjVy+DAT6+amJv3/pJ911l+TvLz39tJSR8dfjaWnSRx+V+PCm/v4K9HOLkQsAANidW1wBu4eF6bW0tJJvL2zYUJozR5o3T7r33j9PIPzxR+mLL6T4+Ms+1E9St8vNJgAAwEuYbLayV86Vdz9kR0nKyVHrXbvKPvHEif/uTZCeXjyauEkT6fbbpR49pOrVL//87dszgRAA4HHKe/12i3cGWtWqpVizWVus1tKHDzVq9Jf9B0rjJ6mz2UwRAAB4NZdfM3DewpgY+fnYN66fj48WxsTY9TkBAHA3blMGogMC9FKzZnZ9zpebN2f7YgCA13ObMiBJo8PD9XgVxg5Lkv5YItHnt980qkEDO6QCAMC9uVUZkKTZUVF6IyZG/j4+FV7w4CfJ39dXt+/erVWDB+uDDz5wREQAANyKWywgvNTo8HDdYTZrbHKyEq1W+UmlLiw8f7yz2ayFMTGKuvlmjfjuOw0fPlwhISHq2rWrc4IDAOCC3LIMSMVrCBKuuUZJOTlaYLFofXq6Dufl/WlTI5OKBwp1CwvTuPDwP9018NZbb+n06dPq37+/EhMTddNNNzn9ewAAwBW4xZyB8jpTUKBDubk6Z7OphsmkZgEBpU4WzM3NVbdu3bR371598cUXuuaaa5yYFgAAxyrv9dvt1gyUJtDPT22DgtQhOFhtg4LKHDEcEBCgVatWqWnTpoqPj9fBgwedlBQAANfhUWWgMoKDg7VhwwaFhoYqNjZWaWlpRkcCAMCpvL4MSFLdunWVmJiooqIixcbG6rfffjM6EgAATkMZ+ENERIQ2bdqk3377Td26dVN2drbRkQAAcArKwEViYmK0ceNGJScnq0+fPsrLyzM6EgAADkcZuMS1116rNWvWaPv27brrrrtUUFDq1kgAALg9ysBl3HLLLfr444+1du1ajRo1SkVFRUZHAgDAYSgDJejevbuWLl2qd955R1OmTFE5xjEAAOCW3HYCoTMMGTJEmZmZGj9+vMLCwjR37lyjIwEAYHeUgTKMGzdOVqtVs2fPVmhoqCZPnmx0JAAA7IoyUA6zZs2S1WrVAw88ILPZrOHDhxsdCQAAu6EMlIPJZNI///lPWa1WjRw5UiEhIerdu7fRsQAAsAsWEJaTyWTSwoUL1bdvXw0ePFhbtmwxOhIAAHZBGagAX19fvfvuu7r11lvVu3dvffvtt0ZHAgCgyigDFVSjRg2tWLFCbdq0UdeuXbV//36jIwEAUCWUgUoIDAzU2rVr1aBBA8XGxuro0aNGRwIAoNIoA5VUu3ZtJSQkqEaNGoqNjdUvv/xidCQAACqFMlAFDRo0UGJionJychQfH6/MzEyjIwEAUGGUgSpq0qSJEhISdPz4cfXs2VNnz541OhIAABVCGbCDNm3aaP369dq7d68GDBig33//3ehIAACUG2XATjp06KCVK1fqs88+04gRI1RYWGh0JAAAyoUyYEddunTRe++9p+XLl2vChAnsdAgAcAuUATvr37+/Fi1apIULF+rhhx82Og4AAGVibwIHGDlypDIzMzV16lSZzWY9+OCDRkcCAKBElAEHmTJlijIyMjRz5kyZzWaNGTPG6EgAAFwWZcCB5s2bp4yMDI0dO1ahoaEaNGiQ0ZEAAPgLyoADmUwmvfTSS8rMzNTQoUMVHBys+Ph4o2MBAPAnLCB0MB8fH7399tuKi4tT//799fXXXxsdCQCAP6EMOEG1atW0fPlytWvXTj169NB//vMfoyMBAHABZcBJAgICtGrVKjVp0kRxcXE6dOiQ0ZEAAJBEGXCqkJAQbdiwQaGhoYqNjVVaWprRkQAAoAw4W926dZWQkKDCwkLFxcUpPT3d6EgAAC9HGTBAZGSkEhMTderUKXXr1k3Z2dlGRwIAeDHKgEFatGihDRs26MCBA+rbt6/y8vKMjgQA8FKUAQNdd911Wr16tb7++msNGTJEBQUFRkcCAHghyoDBbr31Vn300Udas2aNRo8eraKiIqMjAQC8DGXABfTo0UNLly7V0qVLNXXqVLY+BgA4FeOIXcSQIUOUmZmp8ePHKywsTI888ojRkQAAXoIy4ELGjRunjIwMzZkzR2azWRMnTjQ6EgDAC1AGXMzDDz+sjIwMTZo0SaGhoRo2bJjRkQAAHo4y4GJMJpOeeeYZZWZm6t5771VISIh69epldCwAgAdjAaELMplMWrhwofr06aNBgwbp888/NzoSAMCDUQZclJ+fn5YtW6ZbbrlFvXv31rfffmt0JACAh6IMuLAaNWrok08+UatWrdS1a1ft37/f6EgAAA9EGXBxgYGBWrdunRo0aKC4uDgdO3bM6EgAAA9DGXADtWvX1saNG1W9enXFxsbql19+MToSAMCDUAbcRHh4uBITE3XmzBl17dpVmZmZRkcCAHgIyoAbadKkiRISEnTs2DH16tVLZ8+eNToSAMADUAbcTJs2bbRu3Tp99913GjhwoH7//XejIwEA3BxlwA3dcMMNWrlypTZv3qx77rlHhYWFRkcCALgxyoCb6tKli9577z19+OGHmjhxIjsdAgAqjTLgxvr376833nhDCxYs0Jw5c4yOAwBwU+xN4Obuu+8+Wa1WTZ8+XWazWdOnTzc6EgD
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"nx.draw_networkx(W, node_color='c')"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{('A', 'B'): Text(-0.07776005662185159, -0.3386811967059936, '2'),\n",
" ('A', 'C'): Text(0.36944887879272426, 0.5256867154763809, '1'),\n",
" ('A', 'D'): Text(-0.26428629994186137, -0.13563634199376917, '3'),\n",
" ('B', 'D'): Text(-0.3694433520899971, -0.5256943837037334, '4')}"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pos = nx.spring_layout(W) # positions for all nodes\n",
"labels = nx.get_edge_attributes(W,'weight')\n",
"nx.draw_networkx(W, pos=pos, node_color='c')\n",
"nx.draw_networkx_edge_labels(W, pos, edge_labels=labels)\n",
"#nx.draw_networkx_edges(G,pos,width=4, edge_color='g', arrows=False)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Filter the subset of weigthed edges over a threshold"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"strong = [(u,v) for (u, v, d) in W.edges(data=True) if d['weight'] > 2]"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[('A', 'D'), ('B', 'D')]\n"
]
}
],
"source": [
"print(strong)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Signed networks"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"S = nx.Graph()"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"S.add_edge('A', 'B', sign = '+')"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"S.add_edge('A', 'C', sign = '-')"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{('A', 'B'): Text(0.49999933354753434, -0.08276893508159161, '+'),\n",
" ('A', 'C'): Text(-0.4998142645861261, 0.08273808168306745, '-')}"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA0t0lEQVR4nO3dd3RUBeLF8fsmnRQIAYEg0hFBZQKE3hEEFESKIAsqNaisFQv2gruWlVXxtxCkCIJYUFGpUqX3hFVR6TXUENJIgMnM74/ori55IcDkZcr3c45nhbkzczmLzGXemzeGy+VyCQAA+C1bSRcAAAAlizEAAICfYwwAAODnGAMAAPg5xgAAAH6OMQAAgJ9jDAAA4OcCixJyOp1KSUlRZGSkDMMo7k4AAMANXC6XMjMzFRsbK5vN/O//RRoDKSkpqlKlitvKAQAA6xw6dEjXXnut6e1FGgORkZH/ebCoqCj3NAMAAMUqIyNDVapU+c/ruJkijYHfDw1ERUUxBgAA8DKXOsTPCYQAAPg5xgAAAH6OMQAAgJ9jDAAA4OcYAwAA+DnGAAAAfo4xAACAn2MMAADg5xgDAAD4OcYAAAB+jjEAAICfYwwAAODnGAMAAPg5xgAAAH6OMQAAgJ9jDAAA4OcCS7qAO2U5HNqdk6NzLpdCDEO1wsIUEehTv0QAANzO618pd2Rna2JKihakpmpvbq5cf7jNkFQjNFTdYmI0MjZW9cLDS6omAAAey3C5XK5LhTIyMlS6dGmlp6crKirKil6XtC8nRwk7d2pJWpoCJTkKyf5+e6foaCXWqaPqYWHWlAQAoAQV9fXbK88ZmJySonqbN2tFWpqkwofAH29fkZameps3a3JKSrH2AwDAm3jdGHjtwAEN37lTuU7nJUfA/3JIynU6NXznTr124EBx1AMAwOt41RiYnJKi5/btc8tjPbdvn6YcPeqWxwIAwJt5zQmE+3Jy9NfduwsPHTkiffKJtHWrdOqUFBQkVa8utWsnde8uhYT8KT5q1y51KFOGcwgAAH7Na8ZAws6dcjid5oH166WXX84fAJ0754+ACxekH3+UEhOl/ful0aP/dBeH06mEnTv1XYMGxVseAAAP5hVjYEd2tpb8drJggY4elV59VapQQRo3ToqJ+e9td96Z/47B+vUX3c0haUlamn7OztYNfOwQAOCnvOKcgYkpKYWvlk8+kXJypCee+PMQ+F3lylKfPgXeNVDSBD5dAADwY14xBhakphb+yYF166TYWOnGGy/7sR2SFqamXmk1AAC8nsePgUyHQ3tzc80D2dn5JwtWr37Fz7EnN1dZjsv9oCIAAL7B48fAnpwcFXqJxLNn8/+3VKkrfg6XpN05OVd8fwAAvJnHj4Fzl7pa8u8j4PdRUFzPAwCAj/L4MRBiGIUHwsOlcuWkq7wY0SWfBwAAH+XxY6BWWJgu+TLdrJmUkiL99NMVPYfx2/MAAOCPPH4MRAQGqkZoaOGh/v2l0FDprbek06cvvv3IEWnOHNO71wwNVUSgV1xyAQAAt/OKV8BuMTGacOSI+ccLK1eWnntOeuUV6b77/nwFwp9+kr7/Xrr11gLvGiipa0HXJgAAwE8YLtelz5wr6vchF5cd2dmqv3nzpYOHD//3uwlSU/MvTVyjhtShg3TbbVJwcIF3+7FxY9WPiHBzawAASlZRX7+9YgxIUuft27UiLe2yv7a4UE6HdCZJt+V+r+k9pyumFO8QAAB8R1Ffvz3+nIHfJdapo0CbG+u6XJIrT9o1TvN3zZc90a41B9e47/EBAPASXjMGqoeFaXytWu57QMOQdr8n5R6TJB3OOKx2H7bT31f/XU5XId+OCACAj/GaMSBJw2JjNfYqLjuc77ejIvsmS8cW/OmWPFeenln+jLrO6qoT2Seu8nkAAPAOXjUGJOnZqlX1QZ06CrXZLvujEIGSQm0BGh0jVTy9zDT33Z7vZJ9o18r9K6+mKgAAXsHrxoCU/w7Bjvh4tY+OlnTpz0f+fnv76GjtiI/XWze10/aR29W5ZmfT+xzNOqqOMzrqle9fUZ4zzz3FAQDwQF7zaQIzO7KzNTElRQtTU7UnN/dPX2pkKP+CQl1jYnR/bKxuCA//032dLqdeX/O6nl/xfKHnCXSo3kGzes1SxYiKxfOLAACgGPjcRwuLIsvh0O6cHJ1zuRRiGKoVFlakKwuuPrBad39xt45kHjHNVAivoJm9ZuqWGre4szIAAMXG5z5aWBQRgYGyR0aqaVSU7JGRRb7EcOuqrZU8MlndanczzRzPPq7OH3XW88ufl8Pp1qsdAABQonxqDFyNcqXK6du7v9Wbt7ypQFvBI8Ill8auHquOMzrqSIb5uwgAAHgTxsAf2Aybnmj5hFbdt0rXlb7ONLfqwCrZE+1atHuRhe0AACgejIECNK/SXEkJSepxfQ/TzKmzp9R1VleNWTpGF/IuWNgOAAD3YgyYKBtWVnP7zdU7t76jIFuQae71ta+r3fR2OpR+yLpyAAC4EWOgEIZh6OFmD2vtkLWqXsb8yofrDq2TPdGub3/91sJ2AAC4B2OgCOIrx2tbwjb1vqG3aeZ0zmn1+KSHHl/8uM7nnbewHQAAV4cxUERlQsvo876f6/2u7ys4INg0N27DOLWe1lr7z+y3rhwAAFeBMXAZDMPQg00e1IahG1SrrPk3KG46sklxiXH66uevLGwHAMCVYQxcgbhKcdo6Yqv639jfNHMm94x6fdZLDy18SOcc5yxsBwDA5WEMXKGokCh93OtjJd6eqNDAUNPc+E3j1XJqS+05vcfCdgAAFB1j4CoYhqERjUZo47CNuj7metPc1qNb1XBSQ33+0+cWtgMAoGgYA25wc4WbtWXEFg26eZBpJuNchu6ac5cemP+Ach25FrYDAKBwjAE3iQiO0PSe0zW1x1SFBYaZ5iZsmaBmk5tpZ+pOC9sBAGCOMeBGhmFocNxgbR6+WfXK1zPNbT++XQ0TG2rWv2dZ2A4AgIIxBopB/Wvqa/PwzRpiH2Kayb6QrYFfDdSwb4bp7IWzFrYDAODPGAPFpFRQKU25Y4o+uvMjhQeFm+amJE1R08lN9fPJny1sBwDAfzEGitnAmwdqy4gturnCzaaZH0/8qMYfNNb05OkWNgMAIB9jwAJ1y9XVhqEblNAowTRz9sJZ3ff1fbp37r3KPp9tYTsAgL9jDFgkLChME2+fqNm9ZysyONI0N2P7DDX+oLF+OP6Dhe0AAP6MMWCx/jf217aEbYqrGGea+eXUL2oyuYkmb5ssl8tlYTsAgD9iDJSAWmVrad3QdRoVP8o0k+vI1fBvh2vgVwOVeS7TwnYAAH/DGCghoYGhGt9tvOb0naPSIaVNcx//8LEaTWqk5GPJ1pUDAPgVxkAJ612vt7YlbFN8bLxpZtfpXWo2uZkmbJ7AYQMAgNsxBjxAjegaWjNkjR5p+ohp5lzeOT2w4AH1m9NP6bnp1pUDAPg8xoCHCA4I1j+7/FNf9/9a0aHRprnPd3yuhpMaakvKFgvbAQB8GWPAw/S4voeSEpLU/Nrmppm9aXvVYkoLvbfxPQ4bAACuGmPAA1UtU1Xf3/e9nmzxpGnmgvOCHl70sHp91ktpOWkWtgMA+BrGgIcKCgjSG53e0PwB8xUTFmOam/vLXMUlxmnj4Y0WtgMA+BLGgIfrVrubkkcmq9V1rUwzB9IPqNW0Vnp73dscNgAAXDbGgBe4Nuparbh3hZ5t/awMGQVmHE6HRi8ZrR6f9FDq2VSLGwIAvBljwEsE2gI1tsNYLR64WOVLlTfNzds5T/ZEu9YeXGthOwCAN2MMeJlONTtp+8jtal+tvWnmcMZhtf2wrV5f87qcLqeF7QAA3ogx4IUqRVbSkkFL9GLbF00PG+S58jRm2Rh1m9VNJ7JPWNwQAOBNGANeKsAWoJfavaSl9yxVxYiKprnFexbLPtGu7/d/b2E7AIA3YQx4uQ7VOyg5IVmdanQyzRzNOqoOMzro1e9fVZ4zz8J2AABvwBjwARUiKmjRwEUa236sbEbB/5c6XU69sPIF3TrzVh3LOmZxQwCAJ2MM+AibYdOzbZ7VyntXqnJkZdPcsn3
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pos = nx.spring_layout(S) # positions for all nodes\n",
"labels = nx.get_edge_attributes(S,'sign')\n",
"nx.draw_networkx(S, pos=pos, node_color='c',)\n",
"nx.draw_networkx_edges(S,pos,width=4, edge_color='g', arrows=False)\n",
"nx.draw_networkx_edge_labels(S,pos,edge_labels=labels)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Representing other relationships"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"R = nx.Graph()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"R.add_edge('A', 'B', relation = 'friend')"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"R.add_edge('A', 'C', relation = 'father')"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"R.add_edge('A', 'D', relation = 'friend')"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{('A', 'B'): Text(-0.3527611634261536, 0.3731541229775912, 'friend'),\n",
" ('A', 'C'): Text(-0.1473141331865706, -0.4908557230159296, 'father'),\n",
" ('A', 'D'): Text(0.4999437033123544, 0.11724575282478678, 'friend')}"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgQAAAGFCAYAAACCBut2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA7jklEQVR4nO3dd3iUVd7G8e9MeicEQhJa6EgvoYjYEQSx0MGKVHVXcdW1rWXdFVdlXVH0pSioKIgiKqKCIKgoIE2U3oUQEpIYIJ2UmXn/GIlCZlLI5JmZ5P5cFxdw5swzPxTy3DnPKSabzWZDREREajWzuwsQERER91MgEBEREQUCERERUSAQERERFAhEREQEBQIRERFBgUBEREQA34p0slqtJCcnExYWhslkqu6aRERExAVsNhvZ2dnExcVhNpc9BlChQJCcnEzjxo1dUpyIiIgY69ixYzRq1KjMPhUKBGFhYSUXDA8Pr3plIiIiUu2ysrJo3LhxyX28LBUKBGcfE4SHhysQiIiIeJmKPO7XpEIRERFRIBAREREFAhEREUGBQERERFAgEBERERQIREREBAUCERERQYFAREREUCAQERERFAhEREQEBQIRERFBgUBERERQIBAREREUCERERAQFAhEREUGBQERERABfdxfgUhYL5BeA1QpmMwQFgI+Pu6sSERHxeN4fCHLzISUdMjLhTEHp1wMDICoCYutDSJDx9YmIiHgB7w0E+QVw4Aicyi6735kCOJ5m/xEZBq3i7SMHIiIiUsI75xCkpMOWneWHgfOdyra/LyW9euoSERHxUt43QnA0GY4kX/j7rTbYfxQKi6BpnOvqEhER8WLeNUKQkl61MPBnR5I1UiAiIvI77xkhyC+Ag4kOX3p7+TLufOFf57TVrxNJ+/jmPDzmNgb2usTxNQ8mQp1wzSkQEZFaz3sCwYEj9uH+Mvxr3GSaxcRhA1JPZvD2is8Z9Mj9LHvufwzuc2npN1ht9ut2alMdFYuIiHgN7wgEufkVmkA4sGcfEtq2K/n9+OtupMGQAby/5ivHgQDs183N15JEERGp1bxjDsEFPuuvExpGUEAAvj7l5B7NJRARkVrOO0YIMjIr1C0zN4ffTp/Gho20UyeZ8fGH5OTnc+s1A8u/fksX1CkiIuKlPD8QFFsc70DoQL8H/3LO7wP8/Jn38JNck9Cr7DeeKbBve6xtjkVEpJby/EBQwTAA8Pr9D9O6URMAUk+d5L1Vy5kw7VnCgoMZetlVZb85vwBCg6tSqYiIiNfy/EBgtVa4a8+27c+ZVDjm6gF0nXgrf31lGoMvvhR/Pz+XfI6IiEhN4/mTCs0XXqLZbObKLt1JyfiNA0mO9zBwxeeIiIh4O8+/C1Zx06BiiwWAnPz8av0cERERb+b5gcDHx36E8QUoKi5m5ZaN+Pv5cVHTeOcdAwM0oVBERGo1z59DABAVYT++uBzLN61nb+IRANJOn2Lh119xICmRR2++g/CQ0LKvLyIiUot5RyCIrV+hQPDUvNklvw70D6Btk6bM/NujTL5haPnXFxERqcVMNput7AMCgKysLCIiIsjMzCQ8PNyIukrbvq9C2xdXRpG1mO8yt5Heog5jOo5x6bVFRETcrTL3b8+fQ3BWq3gwm1x2OZvNRpGtmIn7nuXmj29myvIpFFoKXXZ9ERERb+I9gSAoAFo2cdnlTCYT9x6YxpEzyQC8uulVrnrnKpKzk132GSIiIt7CewIB2J/1x8dV6RJnn5A8fvh15p347JzX1h1bR7fZ3fjuyHdV+gwRERFv412BAKBpHLRueuGPD3zMvHfmB/6T+LbDl1NzU7l6/tW8tP4lKjC9QkREpEbwvkAA9pGChA4QGVa590WGYUrowK0D7mf+TfMJ8g1y2M1is/DQqocY+dFIsgtcO5FRRETEE3nPKgNncvMhJd1+hLGjg5ACA+z7DMTWh5BzA8AvJ35h6IdDOXzqsNPLt63Xlo9HfsxF9S9ydeUiIiLVqjL3b+8PBH9msdhPLbRa7WcTBJW/A+Gp/FPc/untfL7/c6d9Qv1DmXfDPEa0H+HqikVERKpNzVx2WBE+PvYjjMND7T9XYDviyKBIlo5eyrNXPosJx/MScgpzGPnRSB746gGKLEWurlpERMTtalYguEBmk5l/XPYPVty6gqigKKf9Xv7xZa6efzUnck4YWJ2IiEj1UyD4k/4t+rN10lYS4hKc9vk+8Xu6zu7KD4k/GFiZiIhI9VIgOE/TOk35/s7vmdRtktM+J3JOcOU7V/LKj69oaaKIiNQICgQOBPoGMvv62cy7YR6BvoEO+xRbi7n/q/sZs2QMOYU5BlcoIiLiWgoEZbiz652sH7eeZnWaOe3zwa4P6PVmL/b9ts/AykRERFxLgaAcXWO7smXSFga1GuS0z+703fR4owdLdi8xsDIRERHXUSCogLpBdVk2ZhnPXPGM06WJ2YXZDF88nIdXPUyxtdjgCkVERKpGgaCCzCYzT13+FF/e8iWRgZFO+01bP41r3r2G1JxUA6sTERGpGgWCSrq25bVsnbSVbrHdnPb59si3dJvTjQ3HNhhYmYiIyIVTILgAzSKbsW7cOsZ3He+0T3J2Mpe/fTmvbXpNSxNFRMTjKRBcoEDfQN684U3euP4NAnwCHPYpshZx7/J7ufWTW8ktzDW4QhERkYpTIKiiCd0msG7cOppGNHXaZ+GOhfSe25sDGQcMrExERKTiFAhcoHtcd7ZO2sqAFgOc9tmZtpOENxL4dO+nxhUmIiJSQQoELhIVHMUXN3/BU5c95bRPVkEWQz4YwmNfP6aliSIi4lEUCFzIx+zDM1c+w+djPqdOYB2n/Z5f9zwD3htAWm6accWJiIiUQYGgGlzX+jq2TtpK5wadnfZZ8+saus/pzsakjQZWJiIi4pgCQTVpHtmcDeM3cEfnO5z2ScpK4tK3LmXm5plamigiIm6lQFCNgvyCeOvGt5h13Sz8ffwd9imyFnHPl/cwdulY8oryDK5QRETEToGgmplMJiYnTOb7O7+ncXhjp/3m/zKfi+dezKGThwysTkRExE6BwCA9G/bkp8k/0a95P6d9tqdup/uc7izbt8zAykRERBQIDFUvuB4rblnBPy79h9M+mQWZ3LDoBp5Y8wQWq8XA6kREpDZTIDCYj9mHZ696lqWjlxIREOG039TvpzJwwUB+y/vNwOpERKS2UiBwkxva3MCWSVvoGN3RaZ9Vh1fRfU53Nh/fbGBlIiJSGykQuFHLui35ccKP3NrpVqd9EjMT6ftWX+ZsnaOliSIiUm0UCNws2C+Y+TfN5/VBr+Nn9nPYp9BSyOTPJzP+s/HkF+UbXKGIiNQGCgQewGQycU+Pe1h751oahjV02u+tn9/iknmXcPjUYQOrExGR2kCBwIP0btSbnyb/xJXxVzrts+3ENhLmJPDlgS8NrExERGo6BQIPEx0SzcrbVvLIJY847XPqzCkGLxzM0988raWJIiLiEgoEHsjX7Mvz/Z7nk1GfEB4Q7rCPDRv/WvsvBr8/mIy8DIMrFBGRmkaBwIPd1PYmNk/cTPv67Z32WXFwBd3ndGdr8lYDKxMRkZpGgcDDtY5qzcYJGxnTYYzTPkczj3LJvEuY+9NcAysTEZGaRIHAC4T4h7Bg6AJevfZVfM2+DvsUWAqYsGwCEz+byJniMwZXKCIi3k6BwEuYTCbu7XUv397xLXFhcU77vbntTfrO68uR00eMK05ERLyeAoGXuaTJJWydtJXLm17utM/WlK10n9OdDcc2GFiZiIh4MwUCLxQTGsPXt3/NQxc/VGa/RuGNsFqtBlUlIiLeTIHAS/mafZnWfxqLRywm1D/0nNfMJjMLhy4kNiwWs1n/i0VEpHy6W3i54e2Gs3niZi6qd1FJ25OXPUn/Fv2dTkA8a8+ePTz66KPcc889JCYmVnepIiLiwcq+Y4hXaFuvLZsmbmL8Z+PJLsjmn1f8s8z+//3vfzl16hTbt29nx44dJCQkEB8fzy+//ELHjs6PYxYRkZpLgaCGCPUPZdGwRRRaCrFYLfiYfZz2jY2N5eGHH6ZOnTrs2rWL2NhYli9fToMGDQysWER
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pos = nx.spring_layout(R) # positions for all nodes\n",
"labels = nx.get_edge_attributes(R,'relation')\n",
"friend_edges = [k for k,v in nx.get_edge_attributes(R, 'relation').items() if v == 'friend']\n",
"\n",
"edge_col = ['yellow' if not edge in friend_edges else 'green' for edge in R.edges()]\n",
"nx.draw_networkx(R, pos=pos, node_color='pink', )\n",
"nx.draw_networkx_edges(R,pos,width=4, edge_color=edge_col, arrows=False)\n",
"nx.draw_networkx_edge_labels(R,pos,edge_labels=labels)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Multigraphs\n",
"\n",
"The same nodes can have several edges with different relationships."
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"MG = nx.MultiGraph()"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"MG.add_edge('A', 'B', relation = 'friend', color = 'pink', weight = 1)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"MG.add_edge('A', 'B', relation = 'neighbour', color = 'r', weight = 3)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"MG.add_edge('A', 'C', relation = 'father', color = 'c', weight = 1)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"MG.add_edge('A', 'D', relation = 'friend', color = 'b', weight = 2)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{0: {'relation': 'friend', 'color': 'pink', 'weight': 1},\n",
" 1: {'relation': 'neighbour', 'color': 'r', 'weight': 3}}"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"MG.get_edge_data('A', 'B')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"Drawing multigraphs require different methods"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pos = nx.spring_layout(MG) # positions for all nodes\n",
"#pos = nx.circular_layout(MG)\n",
"\n",
"edges = MG.edges()\n",
"colors = []\n",
"weight = []\n",
"\n",
"for (u,v,attrib_dict) in list(MG.edges.data()):\n",
" colors.append(attrib_dict['color'])\n",
" weight.append(attrib_dict['weight'])\n",
"nx.draw_networkx(MG, pos, edgelist=edges, edge_color=colors, width=weight, node_color='c')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"# References\n",
"* Networkx tutorial https://networkx.github.io/documentation/stable/tutorial.html"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"## Licence"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"The notebook is freely licensed under under the [Creative Commons Attribution Share-Alike license](https://creativecommons.org/licenses/by/2.0/). \n",
"\n",
"© Carlos A. Iglesias, Universidad Politécnica de Madrid."
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"datacleaner": {
"position": {
"top": "50px"
},
"python": {
"varRefreshCmd": "try:\n print(_datacleaner.dataframe_metadata())\nexcept:\n print([])"
},
"window_display": false
},
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.11.7"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,
"autocomplete": true,
"bibliofile": "biblio.bib",
"cite_by": "apalike",
"current_citInitial": 1,
"eqLabelWithNumbers": true,
"eqNumInitial": 1,
"hotkeys": {
"equation": "Ctrl-E",
"itemize": "Ctrl-I"
},
"labels_anchors": false,
"latex_user_defs": false,
"report_style_numbering": false,
"user_envs_cfg": false
}
},
"nbformat": 4,
"nbformat_minor": 4
}