{
"cells": [
{
"cell_type": "markdown",
"id": "artificial-majority",
"metadata": {},
"source": [
"# COMPUTATIONAL SOCIAL NETWORK ANALYSIS\n",
"## Moses Boudourides"
]
},
{
"cell_type": "markdown",
"id": "rocky-lawrence",
"metadata": {},
"source": [
"# I. Graphs and Plots"
]
},
{
"cell_type": "markdown",
"id": "french-aluminum",
"metadata": {},
"source": [
"\n",
" \n",
"### [1. Constructing a Graph](#1)\n",
"\n",
"### [2. NetworkX Graph Generators](#2)\n",
"\n",
"### [3. Saving a Graph (as a file)](#3)\n",
"\n",
"### [4. Undirected Graphs](#4)\n",
"\n",
"### [5. Directed Graphs](#5)\n",
"\n",
"### [6. Bipartite Graphs](#6)\n",
"\n",
"### [7. Trees](#7)\n",
"\n",
"### [8. Weighted Graphs](#8)\n",
"\n",
"### [9. Multigraphs](#9)\n",
"\n",
""
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "awful-december",
"metadata": {},
"outputs": [],
"source": [
"# The modules (libraries) of Python which are used in this notebook:\n",
"\n",
"import networkx as nx\n",
"from networkx.algorithms import bipartite\n",
"import matplotlib.pyplot as plt\n",
"from collections import Counter\n",
"import random\n",
"import math\n",
"import numpy as np\n",
"import pygraphviz\n",
"from networkx.drawing.nx_agraph import graphviz_layout\n",
"from networkx.drawing.nx_agraph import to_agraph\n",
"from IPython.core.display import Image, display"
]
},
{
"cell_type": "markdown",
"id": "danish-array",
"metadata": {},
"source": [
"\n",
"## 1. Constructing a Graph"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "latter-contamination",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(Image('graph0.png')) #, width=1900, unconfined=True))"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "improved-buddy",
"metadata": {},
"outputs": [],
"source": [
"def gne(G,name):\n",
" if G.is_directed()==True:\n",
" print(\"The %s graph is a directed graph\" %name)\n",
" else:\n",
" print(\"The %s graph is an undirected graph\" %name) \n",
" if nx.is_bipartite(G)==True:\n",
" print(\"The %s is a bipartite graph\" %name)\n",
" if nx.is_weighted(G)==True:\n",
" print(\"The %s graph is a weighted graph\" %name)\n",
" if G.is_multigraph()==True:\n",
" print(\"The %s graph is a multigraph\" %name)\n",
" if nx.is_tree(G)==True:\n",
" print(\"The %s graph is a tree\" %name)\n",
" nodes=sorted(G.nodes())\n",
" if set([type(n) for n in G.nodes()])=={str}:\n",
" sn=\", \".join(nodes)\n",
" else:\n",
" sn=\", \".join([str(n) for n in G.nodes()])\n",
" if nx.is_weighted(G)==False:\n",
" edges=sorted(G.edges())\n",
" se=\", \".join([\"(\"+str(x[0])+\", \"+ str(x[1])+\")\" for x in edges])\n",
" else:\n",
" edges=sorted(G.edges(data=True))\n",
" se=\", \".join([\"(\"+str(x[0])+\", \"+ str(x[1])+\", weight=\"+str(x[2]['weight'])+\")\" for x in edges])\n",
" print(\"The %s graph has %i nodes and %i edges.\\nThe nodes are:\\n %s.\\nThe edges are:\\n %s.\" %(name,len(nodes),len(edges),sn,se))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "outdoor-monitoring",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Example 1 graph is an undirected graph\n",
"The Example 1 graph has 8 nodes and 9 edges.\n",
"The nodes are:\n",
" Eshan, Jackson, Kamal, May, Naomi, Oliver, Sonia, Zheng.\n",
"The edges are:\n",
" (Eshan, May), (Jackson, Naomi), (Kamal, Oliver), (Kamal, Zheng), (May, Naomi), (Naomi, Kamal), (Sonia, Eshan), (Sonia, Jackson), (Zheng, Oliver).\n"
]
}
],
"source": [
"# List of edges:\n",
"\n",
"list_of_edges=[(\"Sonia\",\"Eshan\"),(\"Sonia\",\"Jackson\"),\n",
" (\"Eshan\",\"May\"),\n",
" (\"May\",\"Naomi\"),\n",
" (\"Jackson\",\"Naomi\"),\n",
" (\"Naomi\",\"Kamal\"),\n",
" (\"Kamal\",\"Zheng\"),(\"Kamal\",\"Oliver\"),\n",
" (\"Zheng\",\"Oliver\")]\n",
"G = nx.Graph() # an empty (undirected) graph\n",
"G.add_edges_from(list_of_edges)\n",
"name = \"Example 1\"\n",
"gne(G,name)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "included-skiing",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"