【问题标题】:Plotting communities with python igraph使用 python igraph 绘制社区
【发布时间】:2014-03-25 11:22:22
【问题描述】:

我在 python-igraph 中有一个图表 g。我可以通过以下方式获得VertexCluster 社区结构:

community = g.community_multilevel()

community.membership 给了我一个图表中所有顶点的组成员列表。

我的问题很简单,但我还没有找到关于 SO 的特定于 python 的答案。如何绘制具有社区结构可视化的图表?最好是PDF,比如

layout = g.layout("kk")
plot(g, "graph.pdf", layout=layout) # Community detection?

非常感谢。

【问题讨论】:

    标签: python graph igraph modularity decomposition


    【解决方案1】:

    layoutgraphVertexCluster 中的顶点保持有序,因此您可以执行以下操作:

    找出社区结构中的社区数量:

    >>> max(community.membership)
    10
    

    然后用max + 1 独特的颜色创建一个列表/字典(可能不是像下面这样手动):

    >>> color_list = [
    ...     'red',
    ...     'blue',
    ...     'green',
    ...     'cyan',
    ...     'pink',
    ...     'orange',
    ...     'grey',
    ...     'yellow',
    ...     'white',
    ...     'black',
    ...     'purple'
    ... ]
    

    然后,使用列表推导,根据每个顶点的组成员资格创建一个包含每个顶点颜色的列表,并将其分配给vertex_color

    plot(g, "graph.png", layout=layout,
         vertex_color=[color_list[x] for x in community.membership])
    

    结果(太漂亮了!)

    【讨论】:

      【解决方案2】:

      您可以将 VertexClustering 对象直接传递给绘图函数;它会自动绘制底层图形,并自动为集群选择颜色。可以像往常一样在 layout=... 关键字参数中指定所需的布局。

      【讨论】:

      • 感谢您的快捷方式!
      【解决方案3】:

      使用mark_groups 绘制社区的好方法如下:


      示例

      from igraph import *
      import random
      random.seed(1)
      
      
      g = Graph.Erdos_Renyi(30,0.3)
      comms = g.community_multilevel()
      
      
      plot(comms, mark_groups = True)
      

      这会导致以下结果:

      希望这会有所帮助。

      【讨论】:

      • 尝试此操作时出现以下错误:'TypeError: plotting not available'。你能为我澄清一下如何绕过这个吗?你的图表看起来真的很有用。
      • 你好。您得到的错误与 Igraph 用于绘图的某些依赖项有关。在这里查看我的答案:stackoverflow.com/a/45416251/5025009
      • 这并没有帮助,但是对于任何感兴趣的人,我发现解决方案是安装 Micsrosoft Visual C++ 14.0,并安装位于此处的 Pycairo 轮文件:lfd.uci.edu/~gohlke/pythonlibs。感谢您的尝试。
      • 您好 Seralouk,如果您能在下面的链接中查看我的帖子,我将不胜感激。干杯。 stackoverflow.com/questions/51102350/…
      猜你喜欢
      • 2015-01-10
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 2017-03-07
      • 2016-09-19
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      相关资源
      最近更新 更多