【问题标题】:How to draw complement of a network graph?如何绘制网络图的补码?
【发布时间】:2010-01-23 06:31:21
【问题描述】:

Graphviz 中的任何功能可以做到这一点? 如果没有,还有其他可以做到这一点的免费软件吗?

【问题讨论】:

    标签: python graph plot graphviz complement


    【解决方案1】:

    鉴于您想在 graphviz 中呈现图形,我建议使用 python 库 networkx 来计算图形补码。 Networkx 是一个优秀的图论分析库;它还具有与 graphviz 的无缝接口。

    (图补集的粗略定义:想象一个图 A',它具有与 A 相同的节点,但具有所有可能的边,即每个节点都连接到每个其他节点;现在从 A' 中删除A;剩下的是A的补码,A')

    import networkx as NX
    G = NX.gnm_random_graph(10, 10)   # create a random graph w/ 10 nodes, 10 edges
    G_cmpl = NX.complement(G)         # get the complement of graph 'G'
    
    # to render it in graphviz:
    NX.write_dot(G_cmpl, "somefilename.dot")
    

    【讨论】:

    • 这看起来像我想要的。但是如何使用下载的 Python Egg 文件安装 networkx? install.txt 中的快速下载仅显示“从pypi.python.org/pypi/networkx 的 Python 包索引获取 NetworkX 或使用::easy_install networkx 安装它,并且将尝试查找并安装与您的操作系统和 Python 匹配的适当版本版本。”顺便说一句,我已经安装了 Python。
    • 您需要安装“setuptools”才能通过“eggs”安装软件包。我不知道你的操作系统,所以这里是分步指南的链接:peak.telecommunity.com/DevCenter/EasyInstall。如果您不想使用 setuptools ('eggs') 进行安装,请转到 Networkx 存储库 (networkx.lanl.gov/download/networkx) dll 并解压缩适合您操作系统的最新版本,打开 shell,cd 进入包的顶级目录并在 shell 提示符下键入:'sudo python setup.py install'(不带引号)。这将安装它。
    【解决方案2】:

    自己计算补码,然后绘制它。

    【讨论】:

    • 不是我 nvr 想到的,只是有时补码很难计算,尤其是如果你在原始图中有很多节点和边
    • 所以后续有没有什么软件或者在线工具可以实现
    • 嗯,graphviz 是一个很好的绘图工具。你有多少个节点和顶点?输入格式是什么?
    • 我想要一个高效的 sw,所以你可以假设补图中有很多顶点和边。输入是手动输入...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    相关资源
    最近更新 更多