График Networkx: сделать ребра из узлов - PullRequest
1 голос
/ 05 мая 2019

Я хочу построить направленный сетевой график, используя networkx в python.При использовании значения альфа, отличного от 1, начало ребер рисуется также внутри узлов;однако со стрелками все в порядке.

Как сделать так, чтобы края не попадали в мои узлы?

Я ничего не нашел в документации.Установка альфа = 1, очевидно, решит это, но это не то, что я хочу.

import math
import pandas as pd
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

pos={"x":(1/2, math.sqrt(3/4)), "y":(0,0), "z":(1,0)}

G=nx.DiGraph()
G.add_edge("x", "y")
G.add_edge("x", "z")
nx.draw(G, pos=pos, with_labels=True, node_size=1500, alpha=0.3, arrows=True,
        arrowsize=20, width=2)
plt.title("Direct link")
plt.show()

Вот что получается.Ребра продолжаются в узел "x", что плохо.

enter image description here

1 Ответ

1 голос
/ 05 мая 2019

Вы можете решить эту проблему, нарисовав узлы несколько раз:

import math
import networkx as nx
import matplotlib.pyplot as plt

pos={"x":(1/2, math.sqrt(3/4)), "y":(0,0), "z":(1,0)}

G=nx.DiGraph()
G.add_edge("x", "y")
G.add_edge("x", "z")
nx.draw_networkx_edges(G, pos=pos, with_labels=True, node_size=1500, alpha=0.3, arrows=True,
        arrowsize=20, width=2)
# draw white circles over the lines
nx.draw_networkx_nodes(G, pos=pos, with_labels=True, node_size=1500, alpha=1, arrows=True,
        arrowsize=20, width=2, node_color='w')
# draw the nodes as desired
nx.draw_networkx_nodes(G, pos=pos, node_size=1500, alpha=.3, arrows=True,
        arrowsize=20, width=2)
nx.draw_networkx_labels(G, pos=pos)
plt.title("Direct link")
plt.axis("off")
plt.show()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...