【问题标题】:adding edges by using networkx functions使用 networkx 函数添加边
【发布时间】:2011-11-28 13:47:30
【问题描述】:

我无法通过 networkx 制作图表。我正在尝试添加边缘,但我的代码不起作用。我按照http://networkx.lanl.gov/的教程建议的方式进行操作。

我的代码有什么帮助吗? G.nodes() 和 G.edges() 没有打印出任何东西。

import networkx as nx

fh = open("internal_link.txt", 'rb')
G = nx.parse_edgelist(fh, delimiter='\t' and '\n', create_using=nx.DiGraph())
G.nodes()
G.edges()

我的data(internal_link.txt)格式如下:(点表示多行,形式与之前的完全一样)

9991942 15683276
9991942 15763818
9991942 15764086
9991942 15769010
9991942 15771971
9991942 15778227
9991942 15784302
9991942 15793787
9991942 15811314
9991942 15823044
9991942 15843518
9991942 15865514
9991942 15874410
9991942 15936166
9991942 15959560
9991942 16027570
9991942 16043690
9991942 16049723
.
.
.
.

【问题讨论】:

    标签: python


    【解决方案1】:

    通过使用delimiter='\t' and '\n',您告诉NetworkX 您希望fh 中的行拆分'\t' and '\n' 的结果,即'\n'。由于'\n' 用于分隔行,因此没有行将包含'\n',因此每行只有一个标记,不提供有效边。

    示例数据显示了分隔节点的空格。很难判断这是否意味着文件使用了空格,因为 Stackoverflow 并不能很好地处理制表符。不过,您根本不需要指定分隔符,只需让它使用默认空格即可。

    然后你的脚本变成:

    fh = open("internal_link.txt", 'rb')
    G = nx.parse_edgelist(fh, create_using=nx.DiGraph())
    

    不过,您不妨只使用更简单的read_edgelist

    G = nx.read_edgelist("internal_link.txt", create_using=nx.DiGraph())
    

    这应该会产生一个有效的图表(当我使用您显示的数据文件部分尝试它时会产生)。

    请注意,G.nodes()G.edges() 实际上都不会打印任何内容。如果您在 Python 解释器中以交互方式工作,您会看到结果,但您需要在脚本中更加明确:

    print G.nodes()
    print G.edges()
    

    【讨论】:

      猜你喜欢
      • 2017-06-28
      • 1970-01-01
      • 2013-06-26
      • 2019-03-28
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多