{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "kl_py_graph.ipynb",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
},
"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.4"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
""
]
},
{
"cell_type": "code",
"metadata": {
"id": "KAw2SuW907wV",
"colab_type": "code",
"colab": {}
},
"source": [
"# Python graffikai lehetőségei topologia leírásra\n",
"\n",
"## Szükséges modulok isnstallásása"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "HUVRtN1hG8i_",
"scrolled": true,
"colab": {}
},
"source": [
"## Colab alatt:\n",
"# !pip install plotly --upgrade \n",
"# !pip install networkx --upgrade\n",
"# !pip install pydot --upgrade\n",
"\n",
"## anaconda alatt\n",
"# conda install plotly \n",
"# conda install networkx\n",
"# conda install pydot"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "UKBg3KXxH8b4",
"outputId": "02d9ee02-6a85-4c06-98d1-e6ccba88d8f8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 285
}
},
"source": [
"import networkx as nx\n",
"\n",
"G=nx.Graph()\n",
"G.add_nodes_from([\"0\", \"1\", \"2\", \"3\", \"4\"])\n",
"G.add_edges_from([(\"0\", \"1\"), (\"1\", \"2\"), (\"2\", \"0\"), (\"0\", \"3\"), (\"2\", \"4\"), (\"3\", \"4\")])\n",
"\n",
"print(\"Nodes of graph: {}\".format(G.nodes()))\n",
"print(\"Edges of graph: {}\".format(G.edges()))\n",
"\n",
"nx.draw_networkx(G)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Nodes of graph: ['0', '1', '2', '3', '4']\n",
"Edges of graph: [('0', '1'), ('0', '2'), ('0', '3'), ('1', '2'), ('2', '4'), ('3', '4')]\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"