Как отобразить последовательности раскраски с учетом стратегии раскраски плоского графа? - PullRequest
0 голосов
/ 09 мая 2019

Моя проблема заключается в следующем: учитывая список допустимых цветов {1, 2, 3, 4}, граф в качестве списка смежности и раскраску стратегия (т. е. последовательность, которой необходимо следовать для раскраски вершин без смежной вершины того же цвета), что и для ввода.

Как правильно реализовать мою функцию, чтобы отобразить соответствующую последовательность раскраски, имеющую файлы "sample.png" в качестве выходных данных. Последний покажет график со всеми назначенными цветами.

Пример:

Ввод:

  1. График списка смежности (.txt)

                       1 2
                       1 3
                       2 4
                       3 4
    
  2. Colors_allow = [1: оранжевый, 2: синий, 3: зеленый, 4: красный]
  3. Стратегия (.txt)

    [1, 1]
    [2, 2]
    [3, 2]
    [4, 1]
    

    где [[node, color] ...] - формат.

Ожидаемый результат:

Последовательности окраски клоз

Код до сих пор

import matplotlib.pyplot as plt
import networkx as nx

def load_graph(name):
    """
    Returns the graph from an adj. list as G
    """
    with open('graphs/'+str(name)+'.txt','rb') as f:
        G = nx.read_edgelist(f,nodetype=int,data=(('weight',int),))
        return G

def coloring_layout(graph, strategy):
    """
    Returns a coloring class as a sequences of images .png
    """
    colors_allowed = {1: '#eb984e', 2: '#5dade2', 3: '#58d68d', 4:'#ec7063'}
    print(colors_allowed)
    color = colors_allowed[2]
    for node in graph.nodelist():
        SOMETHING
    pos = nx.planar_layout(graph) # Chrobak-payne straight line drawing
    nx.draw(graph, pos, node_color=color, with_labels=True)
    plt.show()

name = input("\n>> ")
graph = load_graph(name)
...