我正在尝试在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()
这样做的目的是生成组织通信网络的模型。我需要节点具有层次结构的属性(部门,职务,薪水),但要使用优先附件创建的边。
答案 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
的源代码开始,它也只是随机生成节点列表,并在优先附件之后附加一些边。
如果您对如何将数据框的属性添加到现有图形中仍然有疑问,则可以在此答案下进行注释。