我正在寻找在图表中指定边缘的精确长度以获得适当绘图的方法。我试图通过边缘属性来创建它:
import numpy as np
import graph_tool.all as gt
tree = gt.Graph()
# ddmatrix is a symmetric adjacency matrix
eprop = tree.new_edge_property("string")
for i in range(ddmatrix.shape[0]):
for j in range(i):
if ddmatrix[j, i] != 0:
e = tree.add_edge(i, j)
eprop[e] = ddmatrix[j, i]
tree.edge_properties["weight"] = eprop
gt.graph_draw(tree, pos=gt.radial_tree_layout(tree, 0), ...)
但在我看来,图表工具绘图功能中没有参数,径向树布局可以指定边长graph-tool draw
我发现边缘的重量可以影响arf布局中的边长(至少在我看来......),但它并没有使得长度比与输入一样精确,并且使顶点放置变得混乱(带有交叉边缘)比树木布局更常见
有没有办法在顶点之间绘制指定距离的图形图像,它们等于边缘权重?这对我来说很有意思,特别是我有一个案例,可以建立所需的图形(相邻节点之间距离的树的表示):
[[ 0. 1.25 0. 0. 2.25]
[ 1.25 0. 1. 1. 0. ]
[ 0. 1. 0. 0. 0. ]
[ 0. 1. 0. 0. 0. ]
[ 2.25 0. 0. 0. 0. ]]
最后,我想知道应该如何重写这个片段以获得带有边权重的加权图作为给定邻接矩阵的属性(我从那里尝试了配方Create a weighted graph from an adjacency matrix但是它没有保存我的边缘权重情况下):
eprop = tree.new_edge_property("double")
tree.add_edge_list(np.transpose(ddmatrix.nonzero()), eprop)
tree.edge_properties["weight"] = eprop
如果已经讨论过这个问题,我很抱歉,但我还没有找到解决方案。无论如何,谢谢你。