Julia 添加顶点的自定义名称

Julia 添加顶点的自定义名称,julia,lightgraphs,Julia,Lightgraphs,我想创建一个具有自定义顶点名称的图。对于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.

我想创建一个具有自定义顶点名称的图。对于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\u edge!(gm,:A,:B)
(这是不正确的,当前节点1,2,3…的名称,因此创建边的方法是
add_edge!(gm,1,2)


换句话说,有A,B,C。。。根据我的理解,在
元图中,一种方法是定义一个“索引属性”,例如
:name
,它将包含
:A
:B
,而不是1,2,3.


然后,您可以使用语法
add\u edge!(gm,gm[:A,:name],gm[:B,:name])
如果我记忆犹新的话。至于打印,您只需使用
get\u prop

检索属性即可。最好的方法是使用
set\u index\u 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