Skip to content

Instantly share code, notes, and snippets.

@rbnvrw
Last active October 14, 2015 21:02

Revisions

  1. Ruben Verweij revised this gist Oct 14, 2015. 1 changed file with 776 additions and 776 deletions.
    1,552 changes: 776 additions & 776 deletions diagram.svg
    Loading
    Sorry, something went wrong. Reload?
    Sorry, we cannot display this file.
    Sorry, this file is invalid so it cannot be displayed.
  2. Ruben Verweij revised this gist Oct 14, 2015. 2 changed files with 806 additions and 2010 deletions.
    2,812 changes: 804 additions & 2,008 deletions diagram.svg
    Loading
    Sorry, something went wrong. Reload?
    Sorry, we cannot display this file.
    Sorry, this file is invalid so it cannot be displayed.
    4 changes: 2 additions & 2 deletions interrelationdiagram.py
    Original file line number Diff line number Diff line change
    @@ -16,7 +16,7 @@
    g = Graph(vertex_attrs={"label": labels}, edges=edges, directed=True)

    # Add in/outdegree to label
    g.vs["label"] = [l+"\n\nIn: "+str(g.indegree(i))+" Uit: "+str(g.outdegree(i)) for i,l in enumerate(g.vs["label"])]
    g.vs["label"] = [l+"\n\nIn: "+str(g.indegree(i))+" Out: "+str(g.outdegree(i)) for i,l in enumerate(g.vs["label"])]

    # Calculate outdegree
    degrees = g.outdegree()
    @@ -61,4 +61,4 @@
    visual_style["margin"] = 50

    # Plot the graph
    plot(g, target="diagram.svg", **visual_style)
    plot(g, target="diagram.svg", **visual_style)
  3. Ruben Verweij revised this gist Oct 14, 2015. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions interrelationdiagram.py
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@
    # Data
    edges = [(0,6),(0,7),(0,16),(0,19),(1,0),(1,3),(1,5),(1,16),(2,1),(2,3),(2,5),(2,11),(2,13),(2,14),(2,15),(2,16),(2,20),(2,22),(3,4),(3,12),(3,14),(3,16),(3,22),(4,22),(5,1),(5,2),(5,3),(5,6),(5,10),(5,11),(5,13),(5,14),(5,16),(5,20),(5,22),(5,23),(6,7),(6,19),(7,0),(7,4),(7,16),(7,18),(7,19),(8,0),(8,9),(8,16),(8,22),(9,0),(9,16),(10,0),(10,6),(11,0),(11,1),(11,3),(11,4),(11,7),(11,10),(11,13),(11,14),(11,16),(11,22),(12,0),(12,1),(12,6),(12,10),(12,11),(12,13),(12,14),(12,16),(12,20),(12,21),(12,22),(13,0),(13,6),(13,9),(13,14),(13,16),(13,18),(14,0),(14,1),(14,6),(14,9),(14,10),(14,20,),(14,22),(15,0),(15,3),(15,5),(15,8),(15,9),(15,12),(15,13),(15,16),(15,20),(15,21),(15,22),(15,23),(16,6),(16,7),(16,10),(16,14),(16,20),(16,22),(17,0),(17,2),(17,3),(17,8),(17,9),(17,10),(17,15),(17,22),(18,0),(18,11),(18,16),(18,19),(19,11),(20,6),(20,7),(20,19),(21,8),(21,9),(21,22),(22,4),(22,9),(22,19),(23,20)]

    labels = ["Gebrek aan wederzijds vertrouwen", "NNL bestuurt vanuit machtspositie", "NNL is veel gericht op KPI's", "Lage betrokkenheid van medewerkers bij merk en organisatie", "Wat je geeft is wat je krijgt", "NNL lijkt vaak een doorgeefluik van Frankrijk", "Dealers zijn risicomijdend", "Dealer blijft vaak hangen in eigen mening /visie", "Veel verschillende contactpersonen voor de dealer", "Helderheid over afspraken niet goed genoeg", "Laag dealerrendement icm investeringseisen", "Onprettige attitude bij sommige medewerkers", "NNL weinig besef van werkelijkheid bij dealerbedrijf", "NNL is onvoorspelbaar met acties en duwmomenten", "Dealer moet veel geven en mag weinig nemen, 1 richtingsverkeer", "Onvoldoende interne communicatie en samenwerking bij NNL", "Onvoldoende wederzijds begrip en respect", "Afhankelijkheid Frankrijk vertragend en belemmerend", "Dealer heeft onvoldoende lange termijnvisie", "Dealer moet lang wennen aan veranderingen", "Hoge investerings-, voorraad- en trainingseisen voor dealers", "Veel verschillende nauwelijks samenwerkende systemen", "Contact erg omslachtig of heeft slechte opvolging", "Gebrek aan een goede en krachtige netwerk strategie"]
    labels = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x"]

    N = len(labels)

    @@ -61,4 +61,4 @@
    visual_style["margin"] = 50

    # Plot the graph
    plot(g, target="diagram.svg", **visual_style)
    plot(g, target="diagram.svg", **visual_style)
  4. Ruben Verweij revised this gist Oct 14, 2015. 1 changed file with 2 additions and 3 deletions.
    5 changes: 2 additions & 3 deletions interrelationdiagram.py
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,5 @@
    from igraph import *
    import numpy as np
    import time

    # Data
    edges = [(0,6),(0,7),(0,16),(0,19),(1,0),(1,3),(1,5),(1,16),(2,1),(2,3),(2,5),(2,11),(2,13),(2,14),(2,15),(2,16),(2,20),(2,22),(3,4),(3,12),(3,14),(3,16),(3,22),(4,22),(5,1),(5,2),(5,3),(5,6),(5,10),(5,11),(5,13),(5,14),(5,16),(5,20),(5,22),(5,23),(6,7),(6,19),(7,0),(7,4),(7,16),(7,18),(7,19),(8,0),(8,9),(8,16),(8,22),(9,0),(9,16),(10,0),(10,6),(11,0),(11,1),(11,3),(11,4),(11,7),(11,10),(11,13),(11,14),(11,16),(11,22),(12,0),(12,1),(12,6),(12,10),(12,11),(12,13),(12,14),(12,16),(12,20),(12,21),(12,22),(13,0),(13,6),(13,9),(13,14),(13,16),(13,18),(14,0),(14,1),(14,6),(14,9),(14,10),(14,20,),(14,22),(15,0),(15,3),(15,5),(15,8),(15,9),(15,12),(15,13),(15,16),(15,20),(15,21),(15,22),(15,23),(16,6),(16,7),(16,10),(16,14),(16,20),(16,22),(17,0),(17,2),(17,3),(17,8),(17,9),(17,10),(17,15),(17,22),(18,0),(18,11),(18,16),(18,19),(19,11),(20,6),(20,7),(20,19),(21,8),(21,9),(21,22),(22,4),(22,9),(22,19),(23,20)]
    @@ -38,7 +37,7 @@
    communities = g.community_edge_betweenness(directed=True)
    clusters = communities.as_clustering()

    # Community detection
    # Alternative community detection
    #clusters = g.community_infomap(vertex_weights=degrees, trials=1)

    # Set edge weights based on communities
    @@ -62,4 +61,4 @@
    visual_style["margin"] = 50

    # Plot the graph
    plot(g, target="diagram"+str(time.time())+".svg", **visual_style)
    plot(g, target="diagram.svg", **visual_style)
  5. Ruben Verweij revised this gist Feb 27, 2015. 2 changed files with 2108 additions and 14 deletions.
    2,092 changes: 2,092 additions & 0 deletions diagram.svg
    Loading
    Sorry, something went wrong. Reload?
    Sorry, we cannot display this file.
    Sorry, this file is invalid so it cannot be displayed.
    30 changes: 16 additions & 14 deletions interrelationdiagram.py
    Original file line number Diff line number Diff line change
    @@ -1,20 +1,20 @@
    from igraph import *
    import numpy as np
    import time

    # Data
    N = 24

    edges = [(0,6),(0,7),(0,16),(0,19),(1,0),(1,3),(1,5),(1,16),(2,1),(2,3),(2,5),(2,11),(2,13),(2,14),(2,15),(2,16),(2,20),(2,22),(3,4),(3,12),(3,14),(3,16),(3,22),(4,22),(5,1),(5,2),(5,3),(5,6),(5,10),(5,11),(5,13),(5,14),(5,16),(5,20),(5,22),(5,23),(6,7),(6,19),(7,0),(7,4),(7,16),(7,18),(7,19),(8,0),(8,9),(8,16),(8,22),(9,0),(9,16),(10,0),(10,6),(11,0),(11,1),(11,3),(11,4),(11,7),(11,10),(11,13),(11,14),(11,16),(11,22),(12,0),(12,1),(12,6),(12,10),(12,11),(12,13),(12,14),(12,16),(12,20),(12,21),(12,22),(13,0),(13,6),(13,9),(13,14),(13,16),(13,18),(14,0),(14,1),(14,6),(14,9),(14,10),(14,20,),(14,22),(15,0),(15,3),(15,5),(15,8),(15,9),(15,12),(15,13),(15,16),(15,20),(15,21),(15,22),(15,23),(16,6),(16,7),(16,10),(16,14),(16,20),(16,22),(17,0),(17,2),(17,3),(17,8),(17,9),(17,10),(17,15),(17,22),(18,0),(18,11),(18,16),(18,19),(19,11),(20,6),(20,7),(20,19),(21,8),(21,9),(21,22),(22,4),(22,9),(22,19),(23,20)]

    labels = ["Gebrek aan wederzijds vertrouwen", "NNL bestuurt vanuit machtspositie","NNL is vooral gericht op KPI's", "Medewerkers weinig betrokken bij merk en organisatie", "Wat je geeft is wat je krijgt", "NNL is vaak een doorgeefluik van Frankrijk", "Dealers zijn risicomijdend", "Dealer blijft vaak hangen in eigen mening /visie", "Veel verschillende contactpersonen voor de dealer", "Afspraken over rentals, targets, ed onduidelijk", "Slecht dealerrendement en hoge investeringseisen", "Medewerkers voelen zich soms verheven boven de dealer", "NNL onvoldoende besef van werkelijkheid bij dealerbedrijf", "NNL is onvoorspelbaar met acties en duwmomenten","Dealer moet veel geven en mag weinig nemen, 1 richtingsverkeer","Onvoldoende interne communicatie en samenwerking bij NNL","Onvoldoende wederzijds begrip en respect","Afhankelijkheid Frankrijk werkt vertragend en belemmerend","Dealer heeft onvoldoende lange termijnvisie","Dealer moet lang wennen aan veranderende processen","Hoge eisen voor dealers met voorraad, investeren, trainen, etc.","Veel losse systemen bij NNL die niet goed samenwerken","Contact is soms erg omslachtig of heeft slechte opvolging","Gebrek aan een goede en krachtige netwerk strategie"]
    labels = ["Gebrek aan wederzijds vertrouwen", "NNL bestuurt vanuit machtspositie", "NNL is veel gericht op KPI's", "Lage betrokkenheid van medewerkers bij merk en organisatie", "Wat je geeft is wat je krijgt", "NNL lijkt vaak een doorgeefluik van Frankrijk", "Dealers zijn risicomijdend", "Dealer blijft vaak hangen in eigen mening /visie", "Veel verschillende contactpersonen voor de dealer", "Helderheid over afspraken niet goed genoeg", "Laag dealerrendement icm investeringseisen", "Onprettige attitude bij sommige medewerkers", "NNL weinig besef van werkelijkheid bij dealerbedrijf", "NNL is onvoorspelbaar met acties en duwmomenten", "Dealer moet veel geven en mag weinig nemen, 1 richtingsverkeer", "Onvoldoende interne communicatie en samenwerking bij NNL", "Onvoldoende wederzijds begrip en respect", "Afhankelijkheid Frankrijk vertragend en belemmerend", "Dealer heeft onvoldoende lange termijnvisie", "Dealer moet lang wennen aan veranderingen", "Hoge investerings-, voorraad- en trainingseisen voor dealers", "Veel verschillende nauwelijks samenwerkende systemen", "Contact erg omslachtig of heeft slechte opvolging", "Gebrek aan een goede en krachtige netwerk strategie"]

    N = len(labels)

    # Define colors used for outdegree visualization
    colours = ['#fecc5c', '#fd8d3c', '#e31a1c', '#a31a1c']
    colours = ['#ffffb2', '#fecc5c', '#fd8d3c', '#e31a1c']

    # Graph generation

    g = Graph(N, edges, True)
    g.vs["label"] = labels
    g = Graph(vertex_attrs={"label": labels}, edges=edges, directed=True)

    # Add in/outdegree to label
    g.vs["label"] = [l+"\n\nIn: "+str(g.indegree(i))+" Uit: "+str(g.outdegree(i)) for i,l in enumerate(g.vs["label"])]
    @@ -35,11 +35,11 @@
    edges["color"] = [color]

    # Community detection
    #communities = g.community_edge_betweenness(directed=True)
    #clusters = communities.as_clustering()
    communities = g.community_edge_betweenness(directed=True)
    clusters = communities.as_clustering()

    # Community detection
    clusters = g.community_infomap(vertex_weights=degrees, trials=10)
    #clusters = g.community_infomap(vertex_weights=degrees, trials=1)

    # Set edge weights based on communities
    weights = {v: len(c) for c in clusters for v in c}
    @@ -52,12 +52,14 @@

    # Other options
    visual_style["vertex_shape"] = "rectangle"
    visual_style["vertex_size"] = [x/max(degrees)*50+110 for x in degrees]
    visual_style["vertex_size"] = 85
    visual_style["vertex_label_dist"] = 0
    visual_style["vertex_label_size"] = 12
    visual_style["vertex_label_size"] = 8
    visual_style["vertex_frame_color"] = g.vs["color"]
    visual_style["vertex_label_family"] = "Calibri"
    visual_style["wrap_labels"] = True
    visual_style["bbox"] = (3508,2480)
    visual_style["margin"] = 60
    visual_style["bbox"] = (764,875)
    visual_style["margin"] = 50

    # Plot the graph
    plot(g, **visual_style)
    plot(g, target="diagram"+str(time.time())+".svg", **visual_style)
  6. Ruben Verweij revised this gist Jan 22, 2015. 1 changed file with 60 additions and 5 deletions.
    65 changes: 60 additions & 5 deletions interrelationdiagram.py
    Original file line number Diff line number Diff line change
    @@ -1,8 +1,63 @@
    from igraph import *
    import numpy as np

    g = Graph()
    g.add_vertices(13)
    g.add_edges([(0,1),(0,5),(1,9),(3,2),(3,4),(3,5),(3,7),(3,9),(5,4),(5,7),(6,5),(6,4),(6,7),(6,9),(7,2),(8,7),(8,2),(8,3),(9,8),(9,7),(9,10),(9,2),(10,8),(10,7),(11,12),(11,2),(11,5),(11,10),(11,9),(11,8),(11,4),(11,3),(12,7),(12,3),(12,2)])
    # Data
    N = 24

    layout = g.layout("kamada_kawai")
    plot(g, layout = layout)
    edges = [(0,6),(0,7),(0,16),(0,19),(1,0),(1,3),(1,5),(1,16),(2,1),(2,3),(2,5),(2,11),(2,13),(2,14),(2,15),(2,16),(2,20),(2,22),(3,4),(3,12),(3,14),(3,16),(3,22),(4,22),(5,1),(5,2),(5,3),(5,6),(5,10),(5,11),(5,13),(5,14),(5,16),(5,20),(5,22),(5,23),(6,7),(6,19),(7,0),(7,4),(7,16),(7,18),(7,19),(8,0),(8,9),(8,16),(8,22),(9,0),(9,16),(10,0),(10,6),(11,0),(11,1),(11,3),(11,4),(11,7),(11,10),(11,13),(11,14),(11,16),(11,22),(12,0),(12,1),(12,6),(12,10),(12,11),(12,13),(12,14),(12,16),(12,20),(12,21),(12,22),(13,0),(13,6),(13,9),(13,14),(13,16),(13,18),(14,0),(14,1),(14,6),(14,9),(14,10),(14,20,),(14,22),(15,0),(15,3),(15,5),(15,8),(15,9),(15,12),(15,13),(15,16),(15,20),(15,21),(15,22),(15,23),(16,6),(16,7),(16,10),(16,14),(16,20),(16,22),(17,0),(17,2),(17,3),(17,8),(17,9),(17,10),(17,15),(17,22),(18,0),(18,11),(18,16),(18,19),(19,11),(20,6),(20,7),(20,19),(21,8),(21,9),(21,22),(22,4),(22,9),(22,19),(23,20)]

    labels = ["Gebrek aan wederzijds vertrouwen", "NNL bestuurt vanuit machtspositie","NNL is vooral gericht op KPI's", "Medewerkers weinig betrokken bij merk en organisatie", "Wat je geeft is wat je krijgt", "NNL is vaak een doorgeefluik van Frankrijk", "Dealers zijn risicomijdend", "Dealer blijft vaak hangen in eigen mening /visie", "Veel verschillende contactpersonen voor de dealer", "Afspraken over rentals, targets, ed onduidelijk", "Slecht dealerrendement en hoge investeringseisen", "Medewerkers voelen zich soms verheven boven de dealer", "NNL onvoldoende besef van werkelijkheid bij dealerbedrijf", "NNL is onvoorspelbaar met acties en duwmomenten","Dealer moet veel geven en mag weinig nemen, 1 richtingsverkeer","Onvoldoende interne communicatie en samenwerking bij NNL","Onvoldoende wederzijds begrip en respect","Afhankelijkheid Frankrijk werkt vertragend en belemmerend","Dealer heeft onvoldoende lange termijnvisie","Dealer moet lang wennen aan veranderende processen","Hoge eisen voor dealers met voorraad, investeren, trainen, etc.","Veel losse systemen bij NNL die niet goed samenwerken","Contact is soms erg omslachtig of heeft slechte opvolging","Gebrek aan een goede en krachtige netwerk strategie"]

    # Define colors used for outdegree visualization
    colours = ['#fecc5c', '#fd8d3c', '#e31a1c', '#a31a1c']

    # Graph generation

    g = Graph(N, edges, True)
    g.vs["label"] = labels

    # Add in/outdegree to label
    g.vs["label"] = [l+"\n\nIn: "+str(g.indegree(i))+" Uit: "+str(g.outdegree(i)) for i,l in enumerate(g.vs["label"])]

    # Calculate outdegree
    degrees = g.outdegree()

    # Order vertices in bins based on outdegree
    bins = np.linspace(0, max(degrees), len(colours))
    digitized_degrees = np.digitize(degrees, bins)

    # Set colors according to bins
    g.vs["color"] = [colours[x-1] for x in digitized_degrees]

    # Also color the edges
    for ind, color in enumerate(g.vs["color"]):
    edges = g.es.select(_source=ind)
    edges["color"] = [color]

    # Community detection
    #communities = g.community_edge_betweenness(directed=True)
    #clusters = communities.as_clustering()

    # Community detection
    clusters = g.community_infomap(vertex_weights=degrees, trials=10)

    # Set edge weights based on communities
    weights = {v: len(c) for c in clusters for v in c}
    g.es["weight"] = [weights[e.tuple[0]] + weights[e.tuple[1]] for e in g.es]

    # Set visual style for the plot
    visual_style = {}
    # Choose the layout
    visual_style["layout"] = g.layout_fruchterman_reingold(weights=g.es["weight"], maxiter=1000, area=N**3, repulserad=N**3)

    # Other options
    visual_style["vertex_shape"] = "rectangle"
    visual_style["vertex_size"] = [x/max(degrees)*50+110 for x in degrees]
    visual_style["vertex_label_dist"] = 0
    visual_style["vertex_label_size"] = 12
    visual_style["wrap_labels"] = True
    visual_style["bbox"] = (3508,2480)
    visual_style["margin"] = 60

    # Plot the graph
    plot(g, **visual_style)
  7. Ruben Verweij renamed this gist Jan 19, 2015. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  8. Ruben Verweij created this gist Jan 19, 2015.
    8 changes: 8 additions & 0 deletions gistfile1.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    from igraph import *

    g = Graph()
    g.add_vertices(13)
    g.add_edges([(0,1),(0,5),(1,9),(3,2),(3,4),(3,5),(3,7),(3,9),(5,4),(5,7),(6,5),(6,4),(6,7),(6,9),(7,2),(8,7),(8,2),(8,3),(9,8),(9,7),(9,10),(9,2),(10,8),(10,7),(11,12),(11,2),(11,5),(11,10),(11,9),(11,8),(11,4),(11,3),(12,7),(12,3),(12,2)])

    layout = g.layout("kamada_kawai")
    plot(g, layout = layout)