Networkx, по-видимому, шифрует список цветов python

import pandas as pd
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
import math
 
def ask():
        order = input("Order of graph: ")
        try:
                d = int(order)
        except Exception:
                print("Must be an integer!")
                ask()
        return order
order = int(ask())
adjacency1 = []
adjacency2 = []
values = []
residues = [1, 2, 4, 5, 8, 9, 10, 16, 18, 20, 21, 25, 32, 33, 36, 37, 39, 40]
for i in range(0, 1):
        print(i)
        vertex_name = str(i)
        for j in range(0, order-1):
                second_vertex = str(j)
                if str(j) == vertex_name:
                        adjacency1.append(vertex_name)
                        adjacency2.append(str(j))
                        values.append("r")
                        print("Vertex cannot connect to itself")
                else:
                        adjacency1.append(vertex_name)
                        adjacency2.append(str(j))
                        print("i = " + str(i))
                        print("j = " + str(j))
                        print(str(abs(j-i)))
                        found = False
                        for k in range(0, len(residues)):
                                if str(residues[k]) == str(abs(j-i)):
                                        found = True
                                        print("Making " + str(j) + " red")
                        if found == True:
                                print("Making " + str(j) + " red")
                                values.append("r")
                        else:
                                print("Making " + str(j) + " blue")
                                values.append("b")
 
print(len(adjacency1))
print(len(adjacency2))
print(len(values))
print(adjacency1)
print(adjacency2)
print(values)
df = pd.DataFrame({'from': adjacency1, 'to': adjacency2, 'value': values})
 
# Build your graph
G = nx.from_pandas_edgelist(df, 'from', 'to', create_using=nx.Graph())
 
# Custom the nodes:
nx.draw_circular(G, with_labels=True, node_color='skyblue', node_size=1500/4, edge_color=values, width=1.0,
        edge_cmap=plt.cm.Blues)
print(nx.number_of_cliques(G))
plt.show()

Списки кажутся правильными, предполагается окрашивание ребра в красный цвет, если вычитание между второй вершиной и первой находится внутри остатков списка = [1, 2, 4, 5, 8, 9, 10, 16, 18, 20, 21, 25, 32, 33, 36, 37, 39, 40].

Глядя внутрь списка, все значения верны, но когда он строит график, каждый раз, когда он строит его, даже если список один и тот же, график имеет разный цвет. Я протестировал его, и хотя он окрашен случайным образом, если каждый цвет в списке r, то он весь красный. Который для меня выглядит так, как будто он перемешал список.

Как мне это решить?


person LENON SATURNINO BERNARDINO    schedule 01.10.2020    source источник
comment
Пожалуйста, даже если вы не можете решить, дайте мне хоть что-нибудь, мне действительно нужно решить эту проблему.   -  person LENON SATURNINO BERNARDINO    schedule 01.10.2020
comment
Проблема в том, что вы создали список цветов для краев. Но вы ничего не сделали для того, чтобы при рисовании ребер он находил ребра в том же порядке, что и ваш список. Необходимые шаги можно найти здесь: stackoverflow.com/questions/25639169/   -  person Joel    schedule 02.10.2020
comment
Если этот ответ вам не поможет, дайте мне знать.   -  person Joel    schedule 02.10.2020