Exercício 3 - Degree Distribution

Ler e comparar a distribuição dos graus dos vérticeis de dois datasets: um deles é a versão mais completa do dataset do facebook usado nos exercícios 1 e 2, com mais vértices, e outro é um dataset randômico. Os dois têm a mesma quantidades de vértices e arestas.

Procedimento:

  • Ler o dataset "facebook_combined.txt", que está em formato csv, separado por espaço, sem cabeçalho.
  • Ler o dataset "another_random_graph.net", que está em formato pajek (a função networkx.read_pajek pode ajudá-lo)
  • Computar o degree dos dois grafos (a função networkx.degree pode ajudá-lo)
  • Usar a função plot_degree_graph, definida logo abaixo, para gerar o gráfico de distribuição dos graus.

In [6]:
import matplotlib.pyplot as plt
from collections import Counter

def plot_degree_graph(degree_dict, title=''):
    degree = sorted( Counter( degree_dict.values() ).iteritems(), key=lambda (k, v): k )
    plt.clf()
    plt.close()
    plt.title(title)
    plt.plot([ k for k, __ in degree ], 
             [ v for __, v in degree ])
    plt.xlabel('amount of nodes')
    plt.ylabel('degree')
    plt.show()

In [9]:
import networkx as nx
import pandas as pd

df = pd.read_csv("facebook_combined.txt", sep=" ", header = None)
G = nx.Graph()
G.add_edges_from( df.values )
plot_degree_graph(nx.degree(G), 'Facebook Degree Centrality')

rG = nx.read_pajek("another_random_graph.net")
plot_degree_graph(nx.degree(rG), 'Random Degree Centrality')



In [ ]: