来自现有节点的networkx中的网络生成器

时间:2018-10-03 14:03:32

标签: python pandas networkx sna

我正在尝试在networkx中生成一个社交网络。为此,我想使用barabasi_albert_graph网络生成器。我希望能够在熊猫中分别生成节点,以便可以给它们指定特定的属性,但随后让生成器根据优先附件创建边缘。这可能吗?

生成器的文档仅说明了如何基于节点和边的数量进行生成

G = nx.barabasi_albert_graph(600, 2, seed=None)

from_pandas_dataframe的文档仅显示了如何从具有像这样的边缘的数据框中创建图形

G =nx.from_pandas_dataframe(df2, 'nodes', 'edges', ['attributes'])

以一种探索性的方式而不是“此代码无效”,我需要类似

G = nx.barabasi_albert_graph.from_pandas_dataframe()

这样做的目的是生成组织通信网络的模型。我需要节点具有层次结构的属性(部门,职务,薪水),但要使用优先附件创建的边。

1 个答案:

答案 0 :(得分:0)

好的,我想我知道你想要什么。 首先,我认为没有像(for j in $(find -name '*.jar');do echo "--$j --";jar tf $j | grep .class | sed 's#/#.#g' | sed 's/.class/ /g' | xargs -n 1 javap -classpath $j ; done;) >> classes.txt 这样的函数,因为它只是满足某些特殊需求的简单生成器。

如果您确实想这样做,建议您使用 networx 的API将属性添加到生成的图形中。 (还有一些您应该知道的注意事项。nx.barabasi_albert_graph.from_pandas_dataframe()在最新的networkx版本中已作废。)

就像

nx.from_pandas_dataframe

G.nodes[1]['room'] = 714的源代码开始,它也只是随机生成节点列表,并在优先附件之后附加一些边。

如果您对如何将数据框的属性添加到现有图形中仍然有疑问,则可以在此答案下进行注释。