将距离矩阵可视化为图形
Vizualize distance matrix into graph
对于以下距离矩阵:
∞, 1, 2
∞, ∞, 1
∞, ∞, ∞
我需要可视化下图:
That's how it should look like
我尝试使用以下代码:
import networkx as nx
import numpy as np
import string
dt = [('len', float)]
A = np.array([ (0, 1, None, 3, None),
(2, 0, 4, 1, None),
(5, None, 0, 3, None),
(None, None, None, 0, None),
(None, None, None, 2, 0),
])*10
A = A.view(dt)
G = nx.from_numpy_matrix(A)
G = nx.drawing.nx_agraph.to_agraph(G)
G.node_attr.update(color="red", style="filled")
G.edge_attr.update(color="blue", width="2.0")
G.draw('out.png', format='png', prog='neato')
但是我好像不能输入无穷大(∞)来表示没有联系。我尝试了 None
、-1
,甚至 ∞
,但似乎没有任何效果,所以如果有人知道我如何可视化该距离矩阵,请告诉我。
这是否是您所追求的不是很明显,但一种选择是使用 np.inf
来表示无穷大。下面是一个片段,其中删除了值为 np.inf
的边,但这是否有意义取决于上下文:
import networkx as nx
import numpy as np
A = np.array(
[
(0, 1, np.inf),
(2, 0, 4),
(5, np.inf, 0),
],
dtype="float",
)
# if edge is np.inf replace with zero
A[A == np.inf] = 0
G = nx.from_numpy_matrix(A, create_using=nx.DiGraph)
G = nx.drawing.nx_agraph.to_agraph(G)
G.node_attr.update(color="red", style="filled")
G.edge_attr.update(color="blue", width="0.3")
G.draw("out.png", format="png", prog="neato")
对于以下距离矩阵:
∞, 1, 2
∞, ∞, 1
∞, ∞, ∞
我需要可视化下图:
That's how it should look like
我尝试使用以下代码:
import networkx as nx
import numpy as np
import string
dt = [('len', float)]
A = np.array([ (0, 1, None, 3, None),
(2, 0, 4, 1, None),
(5, None, 0, 3, None),
(None, None, None, 0, None),
(None, None, None, 2, 0),
])*10
A = A.view(dt)
G = nx.from_numpy_matrix(A)
G = nx.drawing.nx_agraph.to_agraph(G)
G.node_attr.update(color="red", style="filled")
G.edge_attr.update(color="blue", width="2.0")
G.draw('out.png', format='png', prog='neato')
但是我好像不能输入无穷大(∞)来表示没有联系。我尝试了 None
、-1
,甚至 ∞
,但似乎没有任何效果,所以如果有人知道我如何可视化该距离矩阵,请告诉我。
这是否是您所追求的不是很明显,但一种选择是使用 np.inf
来表示无穷大。下面是一个片段,其中删除了值为 np.inf
的边,但这是否有意义取决于上下文:
import networkx as nx
import numpy as np
A = np.array(
[
(0, 1, np.inf),
(2, 0, 4),
(5, np.inf, 0),
],
dtype="float",
)
# if edge is np.inf replace with zero
A[A == np.inf] = 0
G = nx.from_numpy_matrix(A, create_using=nx.DiGraph)
G = nx.drawing.nx_agraph.to_agraph(G)
G.node_attr.update(color="red", style="filled")
G.edge_attr.update(color="blue", width="0.3")
G.draw("out.png", format="png", prog="neato")