{ "cells": [ { "cell_type": "markdown", "id": "weird-kinase", "metadata": {}, "source": [ "#
Graphing Network Data with Pandas
" ] }, { "cell_type": "markdown", "id": "entitled-theta", "metadata": {}, "source": [ "
Dr. W.J.B. Mattingly
\n", "\n", "
Smithsonian Data Science Lab and United States Holocaust Memorial Museum
\n", "\n", "
August 2021
" ] }, { "cell_type": "markdown", "id": "collectible-basic", "metadata": {}, "source": [ "## Covered in this Chapter" ] }, { "cell_type": "markdown", "id": "responsible-doubt", "metadata": {}, "source": [ "1) How to Get Network Data from Pandas to NetworkX
\n", "2) How to Graph the Data
\n", "3) How to Customize the Graph
" ] }, { "cell_type": "markdown", "id": "actual-essex", "metadata": {}, "source": [ "## Getting the Data from Pandas to NetworkX" ] }, { "cell_type": "markdown", "id": "grand-casino", "metadata": {}, "source": [ "Pandas on its own cannot plot out network data. Instead, we must rely on two other libraries, NetworkX and Matplotlib. NetworkX is the standard Python library for working with networks. I have a forthcoming textbook, like this one, that walks users through NetworkX. Matplotlib is one of the standard plotting libraries. The purpose of this brief notebook, is to provide the code necessary for making Pandas work with NetworkX and Matplotlib to take networks stored in a Pandas DataFrame and transform the relationships into graphs." ] }, { "cell_type": "code", "execution_count": 1, "id": "lesbian-jungle", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import networkx as nx\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "id": "hidden-silicon", "metadata": {}, "source": [ "Let's now load our data and see what it looks like." ] }, { "cell_type": "code", "execution_count": 2, "id": "amino-consciousness", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(\"data/network.csv\")" ] }, { "cell_type": "code", "execution_count": 3, "id": "express-evans", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sourcetarget
0TomRose
1RoseRosita
2JerryJeff
3JeffLarry
4CarmenCarmen
5RositaRosita
6LarryCarmen
7LarryJerry
\n", "
" ], "text/plain": [ " source target\n", "0 Tom Rose\n", "1 Rose Rosita\n", "2 Jerry Jeff\n", "3 Jeff Larry\n", "4 Carmen Carmen\n", "5 Rosita Rosita\n", "6 Larry Carmen\n", "7 Larry Jerry" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "id": "subject-draft", "metadata": {}, "source": [ "This is a pretty standard format for networks. We have two columns of data, a source, and a target. Imagine drawing a line to demonstrate networks, the source is where you start drawing the line and the target is where that line ends. This is known as force in network theory and is important for understanding the relationship between nodes, or individual points, in a network graph.\n", "\n", "We can use NetworkX's built in function from_pandas_edgelist() and get that data straight into an edgelist." ] }, { "cell_type": "code", "execution_count": 4, "id": "conventional-happening", "metadata": {}, "outputs": [], "source": [ "G= nx.from_pandas_edgelist(df, \"source\", \"target\")" ] }, { "cell_type": "markdown", "id": "aging-button", "metadata": {}, "source": [ "## Graphing the Data" ] }, { "cell_type": "markdown", "id": "great-canvas", "metadata": {}, "source": [ "And with just two more lines of code we can plot that data out." ] }, { "cell_type": "code", "execution_count": 5, "id": "legitimate-grade", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nx.draw(G)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "isolated-relevance", "metadata": {}, "source": [ "## Customize the Graph" ] }, { "cell_type": "markdown", "id": "acting-block", "metadata": {}, "source": [ "We have a problem with the image above, however, it is difficult to understand who the nodes represent. Let's give them some labels." ] }, { "cell_type": "code", "execution_count": 6, "id": "piano-tennessee", "metadata": {}, "outputs": [ { "data": { "image/png": "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2loiIyOJjo5mz549/O53v2tTPi1SLSIifhUXF8cdd9zB9OnTWbRoEffeey/uPXvwxZxF3M2PYthDMJu8VK9+CW+VG8Nmx9m7L12H/uqYc9lCwoi+7BbKFv6GsuYmkgct57HHHuOOO+4gOjqalJQUbr/9dubMmXPK+bRyi4iIdIgJCz9hZVF5q8uUnYhhwJALejI/u/9p59CtThER6RC5mSmEOeztem+Yw05Opn92c1fxiYhIh0hPiiEvK43wkLZVz+G1OtO4JDHGLzn0GZ+IiHSYIwtNz1herN0ZRETEOja7q5lXUML72yowODw5/Ygj+/ENSo0jJzPFbyO9I1R8IiISNFV1jeRvdFO8r5YajxdXWAhpCVHcfKl2YBcREfELPdwiIiKWouITERFLUfGJiIilqPhERMRSVHwiImIpKj4REbEUFZ+IiFiKik9ERCxFxSciIpai4hMREUtR8YmIiKWo+ERExFJUfCIiYikqPhERsRQVn4iIWIqKT0RELEXFJyIilqLiExERS1HxiYiIpaj4RETEUlR8IiJiKSo+ERGxFBWfiIhYiopPREQsRcUnIiKWouITERFLUfGJiIilqPhERMRSVHwiImIpKj4REbEUFZ+IiFiKik9ERCxFxSciIpai4hMREUtR8YmIiKWo+ERExFJUfCIiYikqPhERsRQVn4iIWIqKT0RELEXFJyIilqLiExERS1HxiYiIpaj4RETEUlR8IiJiKSo+ERGxFBWfiIhYiopPREQsRcUnIiKWouITERFLUfGJiIilqPhERMRSVHwiImIpKj4REbEUFZ+IiFiKik9ERCxFxSciIpai4hMREUtR8YmIiKWo+ERExFJUfCIiYikqPhERsRQVn4iIWIqKT0RELEXFJyIilqLiExERS1HxiYiIpaj4RETEUlR8IiJiKSo+ERGxFBWfiIhYiopPREQsRcUnIiKWouITERFLUfGJiIilqPhERMRSVHwiImIpKj4REbEUFZ+IiFiKik9ERCxFxSciIpai4hMREUtR8YmIiKWo+ERExFJUfCIiYikqPhERsRQVn4iIWIqKT0RELEXFJyIilqLiExERS1HxiYiIpaj4RETEUlR8IiJiKSo+ERGxFBWfiIhYiopPREQsRcUnIiKWouITERFLUfGJiIilqPhERMRSVHwiImIpKj4REbEUFZ+IiFiKik9ERCxFxSciIpai4hMREUtR8YmIiKWo+ERExFJUfCIiYikqPhERsRRHsAN0lMq6RvI3uCkuq6HG48MV5iAt3sWIfol0i3QGO56IiHQQwzRNM9ghAqmwtJoXCkpYvb0CgEZfc8trYQ4bJpCZGkfOwBTSk2KCE1JERDpMpy6+RR/tZMbyYjy+Jlq7SsOAMIedvKw0sjOSOyyfiIh0vE57q/Nw6RXR4G0+6bGmCQ3eJmYsLwJQ+YmIdGJn/MMtmZmZLFiw4KifFZZWM2N58SmV3nc1eJuZsbyYze5qPyYUEZEfkjO++I7nhYISPL6mE75uNh/72pGfeXxNzCsoCVg2EREJrk51q/Ott97ioal5FG3/kpDuSXQdkktoj7MBcM8bS9SlWXy9tQDvATe9xs1j7x8n0PXaiRz84BUcrh7YnOGEnd2P9+3/QVVdI90inVxyySVMmzaN4cOHB/nqRETEHzpN8W3atImxY8dy17Q/cMjt5EDhP9if/1t6T/gjhiMEgK8/X02PEY9hC3fR/HU1AI27t9Br3B/AMGgoWU/N+tfokfEf5G90kxFdx549e7juuuuCeGUiIuJPneZW55/+9CfuueceGruew6Fmg8iLr8JwhNC4t7jlGFe/G3C44rCFfDtvL/pno7GFhmELcRJx3r/jO7CH2v2lFO+rZeHChYwcOZLQ0NBgXJKIiARApxnx7dq1i7/85S80MRdv8zdzF5p8NNUdaDnG7oo75n2OqO4tXxuOUCL6/oyvtxZwMCOdd195hfz8/IBnFxGRjtNpii8pKYm8vDwqUrJY9une4x9kGCf9WeTFV1H55myqS64gIiKCyy67LABpRUQkWDrNrc7x48czf/58nAf+RajdoPmQh/qSf9LcWN+m8zh798WwGaxfMpfbb789QGlFRCRYOsWIzzAM+vfvz+zZs7nv/kmUVR7A5nDiTLyAsKQL23w+18VXsWf1QrKzswOQVkREgumMX7Ls0ksvZdy4cWzdupXFixczbNgwGvpl8/FeT6vLlJ2IYcDZBz7h0GcrWbt2rf8Di4hIUJ2xtzpN0+Svf/0rhYWFPPLII8TGxvL555/z4osv8vB/9CPMYW/XeUNNL5Xr32LChAl+TiwiIj8EZ1zxeb1elixZQq9evRg7diw///nPKS0t5YknniAhIQGA9KQY8rLSCA9p2+U17d7EzrmjODupF6NGjQpEfBERCbKA3+r01z54Bw8eZMGCBTzzzDOcffbZTJkyheuvvx6b7cTlpt0ZRETk+wJWfP7aB2/nzp08++yzvPTSSwwdOpTJkyfTv3//U86x2V3NvIIS3t9WgQF4jpNjUGocOZkpXJJ44hwiItI5BKT4TjbS8la5qXh9Fr7qMuIG3cmTD93Ha0//hjVr1nDNNdfw6quv8vHHH/P000+zatUqxo4dy8SJE0lKSmp3pqq6RvI3uineV8vnJTuo2lfK+Fuu4+ZLtQO7iIiV+LX4MjMzSRkwlA8c6a1uCVS5/BlsoRF0vXo8AIeK3id8+0o+37Set99+m9mzZ7Nnzx7uu+8+7r77bqKiovwVEYD169fzi1/8go0bN/r1vCIi8sPn13l8dY0+3t5ShvOii1s9rungfpwXXNHyff2BcmptsfS9fAg9HB6mTJnC8OHDcTgCM83wvPPO44svvsA0TYzjreYiIiKdll+bZW91A97YZpxAfcl6qtcsxHdwP6Hf2SKobPFUGks/w+P+nK/e+y/CU35C/bYPAZMGRwh5855nxIgR/ox1jNjYWMLCwigrK2t5ElRERKzBb8VXWddIdb2XcOBQ2ZdULX+GHjc/Smh8Cl9vLWjZIih+1EzKXn6ILhcNIip9CADV//cyvup99B7+AMNGXumvSK06//zz2b59u4pPRMRi/DaPL3+Du+Xr2sJ3iPq3oTh7pWLY7MfdIuh4DCB/o7vVY/zlyO1OERGxFr+N+IrLamj+5jkZ38H9fL3lH9RseOvbA763RdDxeHzNFO+r9VekVh0Z8YmIiLX4rfhqPL5vT+qKI2zALUQPGNmO83j9FalV559/Pi+//HKH/C4REfnh8NutTlfYtx0amT6E2k0raNy7DdM027RFkCssxF+RWnXeeedpxCciYkF+G/GlxbuwGQZg4Ew4j27X3suB/52P96u92Byhp7RFUJjDRlqCf+fsnUhKSgr/+te/aGpqwm5v34LWIiJy5vHbBPbKukYSz7sQ14BbiTi/fbuWh9oN1j10VYetpJKYmMjatWtJTk7ukN8nIiLB57dbneW7SvBVuXHGn9vOM5jUl6xn5mNTqa6u9lesVukBFxER6/FL8T344INcc801TMmbRmS39s2LCw9xsPDh26mpqSE1NZUXXngBn8938jeehvPPP19TGkRELMbvi1QfXqC6qNW1Or8vPMRGXlbfli2BCgsLmTx5Mvv27ePpp5/m2muv9WfEFk8//TS7d+/mmWeeCcj5RUTkh8fvG9FmZySTl9WX8BA7J1sG0zAgPMR+VOkBpKen89577zFr1iwmTZrE0KFD2bp1q7+j6laniIgFBWQH9uyMZJZOyGDIBT1xOmyEOY7+NWEOG06HjSEX9GTphIzjbv5qGAY33HADW7Zs4dprr2XQoEHk5ORQUVHht5xavUVExHoCvgP7d/fBq/F4cYWFkJYQ1eZ98A4cOMC0adN4+eWXefDBB5k4cSJO5+k9/Xno0CGioqKora0lNDT0tM4lIiJnhoAXn79t27aNX//613z++ec89dRT3HTTTae1tVBKSgpvv/02qampfkwpIiI/VAG51RlIqampvPnmm/zxj39k2rRpZGZmsmHDhnafTyu4iIhYyxlXfEdcffXVbNq0idGjR3P99dczZswY9u7d2+bz6AEXERFrOWOLD8ButzNhwgS2bdtGQkICF198MdOnT6e+/uRrgsLh1Wa+iu9H/p5Ixv7ln0xauon5q7+kqq4xwMlFRCRYzrjP+FqzY8cOHnroIdatW8fMmTMZNWoUNtux3V5YWs0LBSWs3l5Bc3Mz351yGOawYQKZqXHkDEwhPSmmw/KLiEjgdariO+KDDz7g/vvvB2DOnDlcfvnlLa8dnmBfjMfXRGtXbhgQ5rCTl5V23OkWIiJyZuqUxQfQ3NzM4sWLefjhhxkwYACzZs1ibRmnvaqMiIic2c7oz/iOJzk5mffeew+bzUZ2djbbtm3jwgsv5MdDb+ax1ze3qfQAGrzNzFhezGZ3dWACi4hIh+p0xfd9ERERPProo1w7ZS5N5snn+5mmiWkeXY4Nhw4xr6AkUBFFRKQD+W0j2h+yktIy/v7UZBr2bIPmJpyJF9B1SC4OV3cAyl5+CGfiBTTu3sKh8i9JuPt59v5xAl0H/4KaT17HbG5mSUp/bB+nMO+5uS3nvfHGGxk0aFDL54kiIvLD1+lHfADLNrlxpQ+md85/0zvnRQxHKAdWzj/qmK+3vk/Xob8iafKrOFw9AKj/4iPi75hNr3HziL7kaha/8grNzYdHg5WVlbz33nuMGjWqw69HRETazxLF526wE3reAGwhYdicEUQPGEnj7i1HHRN50VWExvXBsNkx7IcHwq6MEdjDo7CFODF6nofN2YVVq1YBsGTJEjIzM+nZs2eHX4+IiLSfJW51HjhYR9U7z9Pwrw00e+oAMA81YDY3YdjsANi/ue35XY7v/eycAVksWrSIwYMHs2jRIu67777AhxcREb+yRPF98d4reKvcJNwxG3tkLIfK/8W+FycefdDxFrr+3s/+bdAN5E8dSWFhIUVFRQwbNixwoUVEJCA6ZfF5vV48Hk/L913wYA91YgvrQlNDLdVrF7f5nGEOGz++KIVdP/4xt99+Oz//+c8JDw/3Z2wREekAnfIzvqysLMLDw1v+9XA2YXoPUfrMKMr+OoXwc/q1+ZwmcPOlidx5551s2bKF22+/3f/BRUQk4Drtyi3fN2HhJ6wsKm91mbITMQwYckFP5mf3Z82aNWRnZ7Nr167T2gdQRESCo1OO+I4nNzOFMIe9Xe8Nc9jJyUzB6/XyzDPPMG7cOJWeiMgZyjLFl54UQ15WGuEhbbvkw2t1phFSu4+YmBj27dvHpEmTAhNSREQCzjK3Oo/Q7gwiItZmueID2OyuZl5BCe9vq8AAPL5v1+YMc9jwNDaScVYUU4f145LEmKDlFBER/7Nk8R1RVddI/kY3xftqqfF4cYWFkJYQxc5/LKG2ch/PP/98sCOKiIifWbr4TmT37t386Ec/wu12a66eiEgnY5mHW9rirLPOon///rz22mvBjiIiIn6m4juBcePGsWDBgmDHEBERP9OtzhNobGwkKSmJdevWce655wY7joiI+IlGfCfgdDoZPXo0L774YrCjiIiIH2nE14rPPvuMoUOHsnPnThyOTrmet4iI5WjE14qLLrqIxMRE3n333WBHERERP1HxncTdd9/Nn//852DHEBERP9GtzpOoqamhT58+FBcX07Nnz2DHERGR06QR30m4XC6GDRvGwoULgx1FRET8QMV3Co7M6dPgWETkzKfiOwUDBgwA4MMPPwxyEhEROV0qvlNgGIYechER6ST0cMspKi8vJzU1ld27d+NyuYIdR0RE2kkjvlPUs2dPrrzySpYuXRrsKCIichpUfG2g250iImc+FV8bDBkyhNLSUj777LNgRxERkXZS8bWBw+FgzJgxGvWJiJzB9HBLG3355ZdkZGTgdrtxOp3BjiMiIm2kEV8bnXvuuVx88cW88cYbwY4iIiLtoOJrBz3kIiJy5tKtznZoaGggMTGRjRs30qdPn2DHERGRNlDxtVNubi5Rcb1IHnQrxWU11Hh8uMIcpMW7GNEvkW6R+vxPROSHSMXXDoWl1cx8fQMf7a4lzOmk0dfc8lqYw4YJZKbGkTMwhfSkmKDlFBGRY6n42mjRRzuZsbwYj6+J1v5yhgFhDjt5WWlkZyR3WD4REWmdI9gBziSHS6+IBm/zSY81TWjwNjFjeRGAyk9E5AfCkk91Ll68mP79+xMZGUlCQgLXXnsta9eubfU9haXVzFhefEql910N3mZmLC9ms7v6NBKLiIi/WK74Zs+ezaRJk5g6dSrl5eXs3r2bnJwcXn/99Vbf90JBCR5fU8v3ZnNTK0cfzeNrYl5BSbszi4iIH5kWUl1dbXbp0sX829/+dtzXP/74YzMjI8OMjo424+PjzdzcXLOxsdGsqPWY5z+y3ATMroN/YTpiE0x7dE+z520zTXtUNzMmc4xpi4g27V1izbib8sweIx4zHbG9TFtYpBlzxR1mn4feMs9/ZLm5/2C9+eSTT5rnnHOO2bVrV3PEiBFmVVWVaZqmuWPHDhMwX3rpJTMpKcns1q2b+cQTT3Tkn0dExBIsNeJbt24dHo+H4cOHH/d1u93OnDlzqKysZN26daxatYp58+aRv8Hdckz9Fx8Rf8dseo2bB0BT3VeYPi+JuX8h+mejqVrxHHVbC0gYM5eeo2dx8MMleKvLMIDcR2aybNkyVq9ezd69e4mNjSU3N/eoDGvXrmXbtm2sWrWK6dOnU1RUFLC/h4iIFVmq+KqqqujevTsOx/Gf6enXrx8ZGRk4HA6Sk5O55557WL16NcVlNS1TFlwZI7CHR2ELOTxPz7A7iB5wC4bdQZe+V9DcUIOr/43YnBGExvUhpFsS3v078Piaee9/XmbGjBkkJibidDp5/PHHyc/Px+fztWR47LHHCA8PJz09nfT0dAoLCwP/hxERsRBLPdXZrVs3Kisr8fl8xy2/7du3M3nyZD755BPq6+vx+Xz069ePWM+3xeRwdT/qPbbwKAybHQDjmzK0R8S0vG6EOGk+5AGgpnIvw4cPx2b79v837HY75eXlLd/Hx8e3fB0REUFdXd1pXLGIiHyfpUZ8l112GU6nk2XLlh339V/+8pekpaXxxRdfUFNTw8yZMzFNE1fYd0rSMNr9+13d4lmxYgXV1dUt/zweD7179273OUVEpG0sVXzR0dFMnz6d3Nxcli1bRn19PV6vlxUrVvDAAw9QW1uLy+UiMjKS4uJi/vCHPwCQFu/C6Ti9P1WYw8ZVN40mLy+PXbt2AVBRUXHSp0lFRMS/LFV8AFOmTGH27Nk88cQTxMXFkZSUxPPPP8+wYcP4/e9/z+LFi4mKimL8+PGMHDkSgJv7JZ727zWBeTMf4cYbb+Saa64hKiqKjIwMPv7449M+t4iInDotWXaKJiz8hJVF5a0uU3YihgFDLujJ/Oz+/g8mIiJtYrkRX3vlZqYQ5rC3671hDjs5mSl+TiQiIu2h4jtF6Ukx5GWlER7Stj9ZeIiNvKw0LkmMCUwwERFpE0tNZzhdRxaa1u4MIiJnLn3G1w6b3dXMKyjh/W0VGIDnOPvxDUqNIyczRSM9EZEfGBXfaaiqayR/o5vifbXUeLy4wkJIS4ji5ku1A7uIyA+Vik9ERCxFD7eIiIilqPhERMRSVHwiImIpKj4REbEUFZ+IiFiKik9ERCxFxSciIpai4hMREUtR8YmIiKX8fwIffDWlEnvJAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nx.draw(G, with_labels=True)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "female-louis", "metadata": {}, "source": [ "Now that we have labels, we need to make them a bit easier to read. We can do this by changing the font color to \"whitesmoke\" and setting the background to gray. To achieve this we first need to create a fig object to which we will append a few attributes. Next, we draw the network graph and give it a font_color of our desire. Finally, we set the facecolor to gray and plot it." ] }, { "cell_type": "code", "execution_count": 7, "id": "editorial-excess", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure()\n", "nx.draw(G, with_labels=True, font_color=\"whitesmoke\")\n", "fig.set_facecolor('gray')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "united-miami", "metadata": {}, "source": [ "What if I wanted each node in our network to have an individual color? We can do that too by setting up a color map." ] }, { "cell_type": "code", "execution_count": 8, "id": "departmental-venice", "metadata": {}, "outputs": [ { "data": { "image/png": "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RBxF4RMREUdR+ERExFEUPhERcRSFT0REHEXhExERR1H4RETEURQ+ERFxFIVPREQcReETERFHUfhERMRRFD4REXEUhU9ERBxF4RMREUdR+ERExFEUPhERcRSFT0REHEXhExERR1H4RETEURQ+ERFxFIVPREQcReETERFHUfhERMRRFD4REXEUhU9ERBxF4RMREUdR+ERExFEUPhERcRSFT0REHEXhExERR1H4RETEURQ+ERFxFIVPREQcReETERFHUfhERMRRFD4REXEUhU9ERBxF4RMREUdR+ERExFEUPhERcRSFT0REHEXhExERR1H4RETEURQ+ERFxFIVPREQcReETERFHUfhERMRRFD4REXEUhU9ERBxF4RMREUdR+ERExFEUPhERcRSFT0REHEXhExERR1H4RETEURQ+ERFxFIVPREQcReETERFHUfhERMRRFD4REXEUhU9ERBxF4RMREUdR+ERExFEUPhERcRSFT0REHEXhExERR1H4RETEURQ+ERFxFIVPREQcReETERFHUfhERMRRFD4REXEUhU9ERBxF4RMREUdR+ERExFEUPhERcRSFT0REHEXhExERR1H4RETEURQ+ERFxFIVPREQcReETERFHUfhERMRRFD4REXEUhU9ERBxF4RMREUdR+ERExFEUPhERcRSFT0REHEXhExERR1H4RETEURQ+ERFxFHd7fIht20QCFoZpYHoMDMNoj48VERE5S8zCZ0UsqvbWUbqukoayJgyXAbYNhkHm0GR6F/QguVd8rD5eRETknGISvrLN1RxaVQY2RIIWAHbEPv1bmxN7aqneX4cv1cvQe/qQmBMXi2GIiIicJerf8R1adZyD7x0nErBaoncWG6yQjf9EgO0LDnKqpCHawxARETmnqIav9JNKjn9WjRWyL/7i06yQxe4/ltBQ0RTNoYiIiJzTZR3q/P73v9/ys8ftIRgIYUWaZ3nPfe9FPnz1kzZtxwpaFL55lFFPDLqc4YiIiFzUZYXv2Wefbfn50Yce49l5z7N99e6vta3GiiYaTwRIyPJdzpBEREQuKCqLW2yr+XQFTi9gcXvd/MVP5zDhrnEAfPzGp/zhJ68SDoYZMXEof/X8k7z93Cpmf/9WrIjFb3/wB8LhME9+90FSspL57LPP2LhxYzSGJiIi0kpUvuOrP+5v9XjOD2dyxbWD+EHBT/j++J8wZMxA5vxoVsvv03NS8cZ5eHTwD/jjz97gO//1CDfMKeDpifNZtGgR48ePJzU1NRpDExERaSUq4Qs1Rlo9njSngMU/f5NTlXXUnqjjT/+8jBvvK2j5fTgUYckvlxMJR/j4tY2kZqXw9m/+l4bqBqqqqqiqqqJHjx7RGJqIiEgrUQmfbbVexZmRm0bFkaqWxxVHqsjITW95XFddj3X6PQF/EICailrObCUcDuP1eqMxNBERkVaiEj5PvKvV4+rjNWT3yWx53CMvk+rjJy+6HZdHlw4VEZHYikppEnNbX3rso9c2MOeHs0jJSiY5M4m5f3sHHy6+yKkNBqQNSorGcERERM4rKqs6XR4Tl9dsyeirv1hOQnIcz274GQDrl37Kq79YfsFtGC6DvIKsaAxHRETkvIz58+e3/TIrF+CvDrDluSLs8NfbXFymlzHfGaw7N4iISExF7Uu1+AwfOaPSMT2XHq4IERKuQdETEZGYi+pqkkG35pI2IOmS4me6DbImJPDOJ8vZuHEjth2VCaiIiMg5RTV8hmkwbG5fcq5Jx3AZGO7zB9D0mrh8JkPn9OXKmwbz2GOPsXnzZt566y3C4XA0hyUiItIiat/xfVWgLkTZpmqOf1qNFWm++zqAFbGJz/CSd30PsoanYLq/aG8gEOCNN96gqamJOXPmkJiYGIuhiYiIg8UsfGfYlk3TySBhfwTDZeBJdONL8Zz39ZZlsWbNGnbt2sU3v/lNcnJyYjk8ERFxmJjcgf3LDNMgPrPtd1wwTZOpU6eSnZ3NH/7wB2bNmsXQoUNjOEIREXGSmIfv67rqqqvIyMhg8eLFVFZWMmHCBK36FBGRy9aprxGWl5fHE088wd69e3njjTcIhUIdPSQREeniOnX4AFJSUnjkkUewbZsXXniB2trajh6SiIh0YZ0+fAAej4e7776bYcOG8fzzz3P06NGOHpKIiHRRXSJ80HxVl4kTJ3LbbbexcOFCdu7c2dFDEhGRLqjTLm45n6FDh5Kens6iRYuoqKhg8uTJmGaX6beIiHSwLlmMnJwcnnjiCQ4fPszixYsJBAIdPSQREekiumT4ABITE3nwwQdJTExkwYIFnDx58RvdioiIdNnwAbjdbmbOnMmYMWNYsGABxcXFHT0kERHp5Lrcd3xfZRgG1113HVlZWSxZsoQpU6YwZsyYs17nb4CjJQYnygwip6+BbbogLdOmd3+b5FTQ+fEiIt1fzK/V2Z6qqqpYtGgRAwcO5Oabb8blctFYD4W7TBrqwLIB+6t1szFd4PVB/nCLtMyOGLmIiLSXLn2o86syMzN57LHHqK6uZuHChVSWBdi+waTuFFiWcY7oARhYEYOmRoM9W0zKj2raJyLSnXWr8AHEx8dz//330zNnEHu2uIlEDKBtMbMsgwN7DKorYjtGERHpOF3+Oz6AefPmkZCQgG3bhEIhDh06xN6t8Zw8cenX9rQsg307TK6bbOFyxWCwIiLSobpF+ACWLl1KSUkJiYmJ3HXXPdw+axwv/8/6r729E2UGOb27zdefIiJyWrcJ3xkNDQ1s21xM/0HZAIwbP5AHH5tARlYShw5U8ttnV1N6uBqAu+Zey+13XkNCgpfqqnp++x+r2bH1CLZlMHr0OG6bNRKfz0dJSQmrVq2iqampI3dNRESioNuFLykpiWHDB7Bj6xF69U7j//x4Bv/092+ya3sps+4ezTM/nc13H3uRnJ6pzLhjFH/9nYVUVzWQnZOCaTZ/Fzhj9jWMuXYQL76wCMv2c9NNNzF16lTefvvtDt47ERG5XN0mfLNnzwbA6/WyfUsJi/7wCTNmj2LTpwfZvuUwAMuWbGLmXaMZemUvTlTW4/a46NMvk1M1firKv7jd0S23X8Xzz63BdtWTnAbr1q3jySefxDAMbFuHP0VEurJuE75ly5ZRUlJCr9w8brnldpJT48nISqKyvK7lNbYNJyrryMxMYtf2UhY892fue2g8fftlsnVTMf/z2w9bZn8/+sksDNNuOandtm0SExOpr6/voD0UEZFo6DbhO+PosVLWvLebR56cxIH95fQbmNXq91k9kqmqao7X2jX7WLtmH/EJXp76wVQeenwiv/rFu5yorOO//u09fCmlJCZ1xF6IiEisdLvz+AwDVq/awqjR/fj0kwOMHTeQq67pg8tlMvveMYRCYfbtPkbvvHRGjuqD2+MiFAwTDIZbDmO++/YOvvkXBWze8jFbt24lEomQn5/fwXsmIiLR0O1mfACpmQ38efVu5j44nn//+UrmfXdK86rOokp+9sybhMMWbo+Lhx6fSJ++GYTDFvv2HOM3/74KgLeXbiY5Ncx///dzpKamUlFRwcqVK3n//fcZPHgweXl5uHSSn4hIl9StrtV5hmXBxg9MIuGvd/kxw7QZO9HCF9f8OBKJUFpaSmFhIUVFRdTU1DBw4EAGDx5Mfn4+ycnJURy9iIjEUrcMH0BZqcHBvUbzNTovgWnaZPe2yR9+/j9LXV0dRUVFFBYWcvDgQdLS0sjPz9dsUESkC+i24QMo3m9wrKTt8TNNm5QMuHK01eZbFGk2KCLStXTr8AEcLTYoLmyumH2eABpG82kLPXKbZ3rGZSz50WxQRKRz6/bhAwgGmg99HisxsK3TT7acnwc5vW169bWJT4zu52o2KCLS+TgifGfYFtTXQijUHDy3B5JSaLe7MHSG2WBTxOBE0EXw9OzXa9pk+yJ4Tcf8byAiDueo8HUm7TkbtG2oDrkobPBSGXBjAGf+o5tG853pe/rC5CcGSPdaF9qUiEiXp/B1ErW1tRQVFVFUVBTV2WDEhk018VQG3URsOP9NeW1cQK+4EKNSmzB1I3oR6aYUvk4oWrNBy4Z11QnUhFxYbbwLvQubLG+Y69L9bV7ZKiLSlSh8XcC5ZoNnInih2eCWU3Ec83uItCF6D950Db0yk/nFq2txYdM/IciIlEC0d0VEpMMpfF3MmdngM888Q1paGuFwmEAgwK5du/joo4/w+XwA+CMG71cmtXmm92U905N47ZkH+Odf/gtuQ/97iEj30i2v1dmduVwu+vXrR3x8PMuXL2fnzp1UVlby9NNPk5CQwK9//WsGDx5MwhXXg/vybi1xpMnLgHjN+kSke1H4uriUlBRSUlKoqalh1qxZHDx4kIzMLB7+y6fokZZE0dEq/uX1jyipqAHggclXc8/EkST6PJyobeRf3/iYzYVHeXT6GHpnpfLTP67h19+ZBcC//ujbuAybJUuW0NjYyPTp08nOzsa2bYqLi3n//fcJBBRGEelaFL5uICkpiQEDBnD48GFGjRrFQw/9Bf/3hffYVHScuTeM5BeP3cK3fvkquRnJ3DVhBI//6g2qahvpmZ6EaZ59mZrv/Ho5rz3zALc+8z/cnFWL24S0tDQ2btxIaWkpXq+XO+64g4KCAj744IMO2GMRka9P4evCZs+eDYDX66WkpIR169YxevRo9h84yObCUiK2waI/b+feiSMZ2T+HipoGvC4XA3LSqalvouzkhe8mbwIh28CNTU1NDTU1NQD4/X42bdpEQUFBbHdQRCQGFL4ubNmyZZSUlJCXl8ftt99OfHw8SUlJnDpV23KCum1DRU09WamJbD1wnP94cz2P3jyGATkZbPz8CP+5/BOqahvPuX0bcJ1eG5OQkMCUKVPIy8vD6/ViGAZNTU3tsp8iItGk8HUDpaWl7Nq1ixtvvJHy8nIys7Kwv7QYMzstiROnGgBYtbWIVVuLSPB5+OG9k/j2jOv42aLWhyu/vI7zzKrOiRMnAvDiiy/S1NREfn4+U6dOjel+iYjEwmXch0A6k82bN9OvXz+KiooYNHAgk4f1xGUafPPGqwiFI+wsLqdPj1RG5/fC4zIJhiMEQmFs++zTFWrqm4hYFqNyE1qu4OL1egkGgwQCAZKSkhg3blw776GISHRoxtdN+P1+9uzZQ0FBAe+88w5P3TGRv0lKovBYFT9a8C7hiIXX7eIvZ1xH/+w0wpbFzuJyfrlk7VnbCoTCvPL+Fn72l3fjMk1ee+011q9fz2233cb3vvc9ampq2L17N2PHju2APRURuTw6gb2bsm1YVZmE3zI4//U5z/tuUtwWk7MaYjE0EZEOpUOd3ZRhwDfSG1sWp7SdjduAcWnnXvAiItLVKXzdWIrHoiC98fQClbZM7G08hs2EjAYS3ToQICLdk8LXzWV4I9yQ2UCOL4yJjXmOAJ55PtcX5sasBlI9uiefiHRfWtziAElui2+k+2mKGBQ3ejjW5CFkf3EH9t5xIfolhPDpLuwi4gAKn4PEuWyGJgcZmhzs6KGIiHQYHeoUERFHUfhERMRRFD4REXEUhU9ERBxF4RMREUdR+ERExFEUPhERcRSFT0REHEXhExERR1H4RETEUf4/3SeRoKUY7NQAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "val = []\n", "for i in range(len(G.nodes)):\n", " val.append(i)\n", "nx.set_node_attributes(G, val, 'val')\n", "fig = plt.figure()\n", "nx.draw(G, with_labels=True, node_color=val, font_color=\"whitesmoke\")\n", "fig.set_facecolor('gray')\n", "plt.show()" ] } ], "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.9.2" } }, "nbformat": 4, "nbformat_minor": 5 }