csvgraphjupyter-notebookpyhook

Expected an indented block Exception


After running this code, i get this exception and i didn't found any place to fix it properly

import networkx as nx
from networkx.algorithms import bipartite
import numpy as np
from pandas import DataFrame, concat
import pandas as pd
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit 
import ast
import csv
import sys

def plot_degree_dist(G):
in_degrees = G.in_degree()
in_degrees=dict(in_degrees)
in_values = sorted(set(in_degrees.values()))
in_hist = [in_degrees.values().count(x) for x in in_values]
plt.figure() 
plt.grid(True)
plt.loglog(in_values, in_hist, 'ro-') 
plt.plot(out_values, out_hist, 'bv-') 
plt.legend(['In-degree', 'Out-degree'])
plt.xlabel('Degree')
plt.ylabel('Number of nodes')
plt.title('network of places in Cambridge')
#plt.xlim([0, 2*10**2])

I expect to receive a proper graph but all i get is this warning

  File "<ipython-input-32-f89b896484d7>", line 2
    in_degrees = G.in_degree()
             ^
IndentationError: expected an indented block

Solution

  • Python relies on proper indentation to identify function blocks. This code should work:

    import networkx as nx
    from networkx.algorithms import bipartite
    import numpy as np
    from pandas import DataFrame, concat
    import pandas as pd
    import matplotlib.pyplot as plt
    from scipy.optimize import curve_fit 
    import ast
    import csv
    import sys
    
    def plot_degree_dist(G):
        in_degrees = G.in_degree()
        in_degrees=dict(in_degrees)
        in_values = sorted(set(in_degrees.values()))
        in_hist = [in_degrees.values().count(x) for x in in_values]
        plt.figure() 
        plt.grid(True)
        plt.loglog(in_values, in_hist, 'ro-') 
        plt.plot(out_values, out_hist, 'bv-') 
        plt.legend(['In-degree', 'Out-degree'])
        plt.xlabel('Degree')
        plt.ylabel('Number of nodes')
        plt.title('network of places in Cambridge')
        #plt.xlim([0, 2*10**2])
    

    Basically just indent it by 2 or 4 spaces as per your style requirements.