【问题标题】:How do I create a cycle graph with igraph?如何使用 igraph 创建循环图?
【发布时间】:2021-12-09 02:40:59
【问题描述】:

如何在 R 或 Python 中使用 igraphn 节点上创建循环图?

它应该看起来像这样,但是对于任意数量的节点:


编辑:由于要求我添加代码尝试,因此我发现 R 中的一种可能性太复杂了:

n <- 5 
make_graph( c(tail(rep(1:n, each=2), -1), 1) )

【问题讨论】:

    标签: python r igraph


    【解决方案1】:

    对于python,你需要安装:

    pip install python-igraph
    pip install pycairo
    

    然后您可以使用Graph.Ring 中的Graph.Ring,如下所示:

    import igraph as ig
    nodes = 5
    g = ig.Graph.Ring(n=nodes, circular=True)
    ig.plot(g,vertex_label = range(1,nodes+1))
    

    在 R 中,相关的 igraph 函数是 make_ring()。您可以在 Doc 中阅读:

    创建环形图 描述 环是一维格子,这个函数是 make_lattice 的一个特例。

    用法 make_ring(n, 定向 = FALSE, 相互 = FALSE, 循环 = TRUE)


    输出:

    【讨论】:

    • 太棒了!我很好奇你是如何找到Graph.Ring 的。谷歌?文档搜索?
    • @Szabolcs 欢迎老兄,我读过here,我以前不知道
    • @Szabolcs 感谢您的编辑,我添加了一些详细信息,请阅读,如果您想编辑它们,这是您的问题和答案,这是您的区域;)
    【解决方案2】:

    如果您将igraphR 一起使用,请尝试make_ring

    plot(make_ring(5))
    

    【讨论】:

    • 你能告诉我你用什么搜索词找到了这个功能吗?或者你之前已经知道了?
    • @Szabolcs 我之前通过多次阅读igraph.org/r/html/latest 已经知道了。
    【解决方案3】:

    在带有n 顶点的 R 中:

    n <- 8
    
    seq_len(n) %>%
      {c(head(., -1), tail(., -1))} %>%
      matrix(ncol = 2) %>%
      rbind(c(n, 1)) %>%
      graph_from_edgelist(directed = FALSE)
    

    【讨论】:

    • 这很好用,我可以把它包装成一个函数,它很容易推广到有向案例。但是,我想知道您是否知道更简单的解决方案。
    • 这还不够简单吗?如果您愿意,可以将其放入 1 个命令中(我喜欢使用管道):graph_from_edgelist(matrix(c(seq_len(n), c(2:n, 1)), ncol = 2), directed = FALSE)
    猜你喜欢
    • 1970-01-01
    • 2021-10-10
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 2018-11-25
    相关资源
    最近更新 更多