我正在使用带有python 2.7的networkx 1.9,并决定更新到最新的1.10版本。 当使用二分图生成器函数configuration_model时,我发现我之前使用的是什么:
import networkx as nx
from networkx.algorithms import bipartite
import networkx.algorithms.bipartite as bipartite
aseq=[1 2 1]
bseq=[2 1 1]
G =bipartite_configuration_model(aseq,bseq, create_using=None, seed=None)
新版本:
G =configuration_model(aseq, bseq, create_using=None, seed=None)
configuration_model() got multiple values for keyword argument 'create_using'
不再起作用了。知道什么是create_using =应该是什么?我读了源文件,看不到需要的东西!
答案 0 :(得分:1)
我不确定版本之间的区别,但旧版本的小改动解决了这个问题。我对您的代码所做的更改是:
aseq和bseq的定义,因为它们给出了错误:
aseq=[1, 2, 1] # with commas between degree sequences
bseq=[2, 1, 1]
调用configuration_model函数
G = bipartite.configuration_model(aseq,bseq, create_using=None, seed=None) # you had an underscore instead of a '.'
然后使用简单的color_map来区分属于每个部分的节点,如下所示:
color_map = []
for n in G.nodes():
if G.node[n]['bipartite'] == 0:
color_map.append('blue')
else: color_map.append('green')
绘制图表:
对于create_using参数,您可以查看documentation。它表示您可以使用它来确定返回图表的类型。默认情况下,它是具有平行边的多图。
答案 1 :(得分:1)
bipartite_configuration_model
和configuration_model
是不同的命令。您的新代码调用configuration_model
,其中只有一个节点分区。
它将aseq
解释为度数分布。然后它将第二个参数解释为create_using
变量(如果第二个参数是可选的,可以通过在函数调用中给出第二个参数,或者在函数调用中使用关键字来指定{{3} })。所以它看作create_using=bseq
。然后你明确地为create_using
传递了一个额外的值,因此它有多个值。你显然不是故意这样做,因此错误。
我相信阿卜杜拉的答案会告诉你你真正想做的事情。
补充:我怀疑你是否真的想要同时进行这两个电话。
from networkx.algorithms import bipartite
import networkx.algorithms.bipartite as bipartite