Построение графа igraph с параллельными ребрами без суперпозиции ребер
У меня есть график с несколькими ребрами между вершинами, как показано ниже:
IGRAPH U-W- 5 10 --
+ attr: id (v), label (v), weight (e)
+ edges:
0 -- 1 1 2 3 2 -- 0 1 3 4 -- 1 3
1 -- 0 0 2 3 3 4 3 -- 0 1 1 2 4
edgeWeights = [10, 7, 9, 6, 9, 11, 8, 8, 5, 7]
Я хочу построить этот график, показывающий по краям значение веса атрибута, но возникает суперпозиция параллельных ребер. Код ниже используется для построения графика.
def graphVisualization(graph, clusters):
member = clusters.membership
if member is not None:
gcopy = graph.copy()
edges = []
edges_colors = []
for edge in graph.es():
if member[edge.tuple[0]] != member[edge.tuple[1]]:
edges.append(edge)
edges_colors.append("red")
else:
edges_colors.append("black")
gcopy.delete_edges(edges)
layout = gcopy.layout("kk")
graph.es["color"] = edges_colors
else:
layout = graph.layout("ba")
graph.es["color"] = "gray"
visual_style = {}
visual_style["vertex_label_dist"] = 0
visual_style["edge_curved"] = False
visual_style["vertex_shape"] = "circle"
visual_style["edge_color"] = graph.es["color"]
visual_style["vertex_size"] = 30
visual_style["layout"] = layout
visual_style["margin"] = 40
graph.vs["label"] = range(0, graph.vcount())
graph.es["label"] = graph.es.get_attribute_values("weight")
if member is not None:
colors = []
for i in range(0, max(member)+1):
colors.append('%06X' % randint(0, 0xFFFFFF))
for vertex in graph.vs():
vertex["color"] = str('#') + colors[member[vertex.index]]
visual_style["vertex_color"] = graph.vs["color"]
plot(graph, **visual_style)
На рисунке ниже показан график.
Как я могу построить график без наложения egdes?
График с параметром автокрутки.