我想用自定义顶点名称创建一个图形。MetaGraphs.jl有可能吗?
using MetaGraphs
using LightGraphs
using GraphPlot
# Create empty graph
gm = MetaGraph()
# Add vertices with properties
add_vertex!(gm, :A, [7.2,8.6])
add_vertex!(gm, :B, [3.2,6.7])
add_vertex!(gm, :C, [6.3,3.9])
add_vertex!(gm, :D, [2.4,6.7])
gplot(gm, nodelabel = vertices(gm))
但是,顶点可能有一个名为:A
而不是的名称1
。由于在下一步中我想添加一条边线add_edge!(gm, :A,:B)
(这是不正确的,当前节点1,2,3 ...的名称,因此创建边线的方法是add_edge!(gm, 1,2)
)
换句话说,用A,B,C,...代替1,2,3。
最好的方法是这样使用set_indexing_prop!
:
g = MetaGraph(path_graph(3))
set_prop!(g, 1, :name, 'a')
set_prop!(g, 2, :name, 'b')
set_prop!(g, 3, :name, 'c')
set_indexing_prop!(g, :name)
然后,您可以引用这些名称,它们将被转换为顶点索引,它们是整数:
g['a', :name] # returns 1
g['b', :name] # returns 2
g['c', :name] # returns 3
has_edge(g, g['b', :name], g['c', :name]) # returns true
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句