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, то он весь красный. Который для меня выглядит так, как будто он перемешал список.
Как мне это решить?