Skip to content

Instantly share code, notes, and snippets.

@pgtwitter
Created August 7, 2024 14:11
Show Gist options
  • Save pgtwitter/668a9b056263cf96336c7d6c6e49090f to your computer and use it in GitHub Desktop.
Save pgtwitter/668a9b056263cf96336c7d6c6e49090f to your computer and use it in GitHub Desktop.
rendering network with networkx (extends Maze)
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "87c94f74-0ab0-4988-91dc-7782f57ff5b2",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 300x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# %%\n",
"\n",
"import networkx as nx\n",
"import matplotlib.pyplot as plt\n",
"\n",
"\n",
"def extendsMaze(L, pos, edges):\n",
" L = L + (L-1)\n",
" idx2idx = dict([(i, pos[i][0]*2 + pos[i][1]*L*2) for i in range(len(pos))])\n",
" edges1 = [(idx2idx[e0], idx2idx[e1]) for e0, e1 in edges]\n",
" edges2 = []\n",
" for e0, e1 in edges1:\n",
" if (e0 > e1):\n",
" e0, e1 = e1, e0\n",
" if e1-e0 == 2:\n",
" edges2.append((e0, e0+1))\n",
" edges2.append((e0+1, e1))\n",
" else:\n",
" edges2.append((e0, e0+L))\n",
" edges2.append((e0+L, e1))\n",
" for i in range(max(idx2idx.values())+1):\n",
" if (i, i+L) in edges2 and (i+L, i+L+1) in edges2:\n",
" edges2.append((i, i+L+1))\n",
" if (i, i+1) in edges2 and (i, i+L) in edges2:\n",
" edges2.append((i+1, i+L))\n",
" if (i, i+1) in edges2 and (i+1, i+1+L) in edges2:\n",
" edges2.append((i, i+1+L))\n",
" if (i, i+L) in edges2 and (i+L-1, i+L) in edges2:\n",
" edges2.append((i, i+L-1))\n",
" pos = dict([(i, ((i % L), int(i / L))) for i in range(max(idx2idx.values())+1)])\n",
" return L, pos, edges2, idx2idx\n",
"\n",
"\n",
"# maze reference: https://rikei-tawamure.com/entry/2020/06/12/000109#%E5%AE%9F%E8%A3%85%E3%81%AE%E6%96%B9%E6%B3%95\n",
"edges = [\n",
" [0, 4],\n",
" [1, 2],\n",
" [1, 5],\n",
" [2, 6],\n",
" [2, 3],\n",
" [4, 8],\n",
" [5, 9],\n",
" [6, 7],\n",
" [6, 10],\n",
" [7, 11],\n",
" [8, 12],\n",
" [8, 9],\n",
" [9, 13],\n",
" [11, 15],\n",
" [13, 14],\n",
" [14, 15]\n",
"]\n",
"s = 0\n",
"g = 10\n",
"L = 4\n",
"\n",
"#\n",
"plt.figure(figsize=(3, 3))\n",
"G = nx.Graph(edges)\n",
"pos = dict([(i, ((i % L), int(i / L))) for i in G.nodes])\n",
"nx.draw_networkx(G, pos, font_color='w')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4c6f462e-592c-488f-ac6f-b4667fde8d73",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 400x400 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"[0, 7, 14, 21, 29, 23, 16, 9, 3, 11, 18, 25, 32]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# %%\n",
"\n",
"L2, pos2, edges2, idx2idx = extendsMaze(L, pos, edges)\n",
"plt.figure(figsize=(4, 4))\n",
"G = nx.Graph(edges2)\n",
"path = nx.dijkstra_path(G, idx2idx[s], idx2idx[g])\n",
"nx.draw_networkx_edges(G, pos2)\n",
"ps = [pos2[i] for i in path]\n",
"plt.plot([p[0] for p in ps], [p[1] for p in ps], color='r', linewidth=5)\n",
"nx.draw_networkx_nodes(G, pos2)\n",
"nx.draw_networkx_labels(G, pos2, font_color='w')\n",
"plt.show()\n",
"path"
]
}
],
"metadata": {
"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
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment