如何解决节点大小取决于度
我试图将节点大小设置为等于节点的度数。
我的数据集是
Person1 Age Person2 Wedding
0 Adam John 3 Yao Ming Green
1 Mary Abbey 5 Adam Lebron Green
2 Samuel Bradley 24 Mary Abbey Orange
3 Lucas Barney 12 Julie Lime Yellow
4 Christopher Rice 0.9 Matt Red Green
我构建网络的代码是
pos=nx.spring_layout(G,k=0.20,iterations=30)
nx.draw_networkx_nodes(G,pos,node_size = degrees,nodelist=collist['value'],node_color=collist['Wedding'])
nx.draw_networkx_edges(G,width = [I['Age'] for i in dict(G.edges).values()])
我尝试如下定义度数
degrees=[]
for x in df['Person1']: # all nodes size should depend on the degree,so also for Person2. Maybe this step is wrong
deg=G.degree[x]
degrees.append(deg)
但它似乎不是一个标量。
错误是
ValueError: s must be a scalar,or the same size as x and y
编辑:我忘了举一个 collist['value']
的例子:
Wedding variable value
0 Green Person1 Adam John
1 Green Person1 Mary Abbey
... ... ... ...
75 Green Person2 Yao Ming
76 Green Person2 Adam Lebron
解决方法
假设 G
中的节点是从 Person1
和 Person2
列中获取的,那么 df['Person1']
中“人”的数量与 nodelist=collist['value']
中的节点总数不同G,或至少在 G
中。
一个简单的解决方法是考虑 for x in df['Person1']:
中每个节点的度数。基本上你是对的,这一步是错误的:
for x in G.nodes():
您可以将其更改为:
degrees = [G.degree[node] for node in G.nodes()]
collist['value']
或者如果您只想要 degrees = [G.degree[node] for node in collist['value']]
中的节点:
G = nx.barabasi_albert_graph(100,2,seed=42)
degrees = [G.degree[node] for node in G.nodes()]
pos=nx.spring_layout(G)
nx.draw_networkx_nodes(G,pos,node_size = degrees)
nx.draw_networkx_edges(G,alpha=0.1)
小例子:
CREATE TABLE airlines (
airline_name VARCHAR NOT NULL PRIMARY KEY
);
CREATE TABLE airport (
code VARCHAR UNIQUE NOT NULL PRIMARY KEY,name VARCHAR NOT NULL,category VARCHAR NOT NULL,city VARCHAR NOT NULL
);
CREATE TABLE volo (
code VARCHAR UNIQUE NOT NULL PRIMARY KEY,departure_time TIME(0) NOT NULL,departure_airport VARCHAR NOT NULL REFERENCES aeroporto(codice),arrival_time TIME(0) NOT NULL,arrival_airport VARCHAR NOT NULL REFERENCES aeroporto(codice),airline VARCHAR NOT NULL REFERENCES airlines(airline_name)
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。