"""Hier vind je de code voor het maken van een mooi geplotte afbeelding. De functie visualizeGraph maakt gebruik
van de route die gegenereerd is in calculateRoute. Er word een graaf gemaakt het het aantal stops in de route
en de route word hier vervolgens doormiddel van rode pijlen op geplot."""

import networkx as nx
import matplotlib.pyplot as plt


def visualizeGraph(route):
    """visualizeGraph is een functie die een png van de gekozen route (rode pijlen) maakt"""
    graph = nx.DiGraph()  # Maakt graph aan
    length = len(route) - 1

    def getAlphabet(number):
        """Deze functie vertaalt een getal naar een letter (nodig voor networkx)"""
        alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
        return alphabet[number]

    for vertex in range(length):  # Elke combinatie van vertex moet worden toegevoegd
        for secVertex in range(length):
            if secVertex != vertex:
                graph.add_edges_from([(getAlphabet(vertex), getAlphabet(secVertex))])

    storeColor = {'A': 'yellow'}  # winkel = geel
    values = [storeColor.get(node, 'green') for node in graph.nodes()]  # De rest is groen

    redArrows = []
    for point in range(len(route) - 1):
        redArrows.append((getAlphabet(route[point]), getAlphabet(route[point + 1])))
        # Voegt alle routepunten toe aan de lijst met rode pijlen

    blackEdges = [edge for edge in graph.edges() if edge not in redArrows]
    # Slaat alle kanten die niet rood zijn op als zwart

    position = nx.spring_layout(graph)
    nx.draw_networkx_nodes(graph, position, cmap=plt.get_cmap('jet'),
                           node_color=values, node_size=500)
    nx.draw_networkx_labels(graph, position)
    nx.draw_networkx_edges(graph, position, edgelist=redArrows, edge_color='r', arrows=True, arrowsize=20)
    nx.draw_networkx_edges(graph, position, edgelist=blackEdges, arrows=False)

    plt.savefig('graphplot.png')  # Slaat de foto op als png
    plt.show()

"""Hier vind je de code voor het maken van een mooi geplotte afbeelding. De functie visualizeGraph maakt gebruik
van de route die gegenereerd is in calculateRoute. Er word een graaf gemaakt het het aantal stops in de route
en de route word hier vervolgens doormiddel van rode pijlen op geplot."""

import networkx as nx
import matplotlib.pyplot as plt


def visualizeGraph(route):
    """visualizeGraph is een functie die een png van de gekozen route (rode pijlen) maakt"""
    graph = nx.DiGraph()  # Maakt graph aan
    length = len(route) - 1

    def getAlphabet(number):
        """Deze functie vertaalt een getal naar een letter (nodig voor networkx)"""
        alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
        return alphabet[number]

    for vertex in range(length):  # Elke combinatie van vertex moet worden toegevoegd
        for secVertex in range(length):
            if secVertex != vertex:
                graph.add_edges_from([(getAlphabet(vertex), getAlphabet(secVertex))])

    storeColor = {'A': 'yellow'}  # winkel = geel
    values = [storeColor.get(node, 'green') for node in graph.nodes()]  # De rest is groen

    redArrows = []
    for point in range(len(route) - 1):
        redArrows.append((getAlphabet(route[point]), getAlphabet(route[point + 1])))
        # Voegt alle routepunten toe aan de lijst met rode pijlen

    blackEdges = [edge for edge in graph.edges() if edge not in redArrows]
    # Slaat alle kanten die niet rood zijn op als zwart

    position = nx.spring_layout(graph)
    nx.draw_networkx_nodes(graph, position, cmap=plt.get_cmap('jet'),
                           node_color=values, node_size=500)
    nx.draw_networkx_labels(graph, position)
    nx.draw_networkx_edges(graph, position, edgelist=redArrows, edge_color='r', arrows=True, arrowsize=20)
    nx.draw_networkx_edges(graph, position, edgelist=blackEdges, arrows=False)

    plt.savefig('graphplot.png')  # Slaat de foto op als png
    plt.show()

Hier vind je de code voor het maken van een mooi geplotte afbeelding. De functie visualizeGraph maakt gebruik van de route die gegenereerd is in calculateRoute. Er word een graaf gemaakt het het aantal stops in de route en de route word hier vervolgens doormiddel van rode pijlen op geplot. visualizeGraph is een functie die een png van de gekozen route (rode pijlen) maakt # Maakt graph aan Deze functie vertaalt een getal naar een letter (nodig voor networkx) # Elke combinatie van vertex moet worden toegevoegd # winkel = geel # De rest is groen # Voegt alle routepunten toe aan de lijst met rode pijlen # Slaat alle kanten die niet rood zijn op als zwart # Slaat de foto op als png