Skip to content

Commit 8f9823f

Browse files
committed
乌鸦 代码提交
1 parent 95a0627 commit 8f9823f

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

wuya/level/doc/1_evidence.xls

136 KB
Binary file not shown.

wuya/level/level_count.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import networkx as nx
2+
import pandas as pd
3+
from pyvis import network as net
4+
5+
df = pd.read_excel('./doc/1_evidence.xls')
6+
df = df.loc[:, ['id','name','invite_id','invited_id']]
7+
df.columns = ['id','title','to', 'from']
8+
9+
G = nx.from_pandas_edgelist(df, 'from', 'to', create_using=nx.DiGraph())
10+
11+
# 找到根节点
12+
top_node = []
13+
for node, degrees in G.in_degree():
14+
if degrees == 0:
15+
top_node.append(node)
16+
print('Big Boss:', top_node)
17+
18+
# 设置所有节点级别
19+
l = nx.shortest_path_length(G, 100000)
20+
nx.set_node_attributes(G, l, 'level')
21+
22+
# 计算每级人员数目
23+
data = {}
24+
for node, level in l.items():
25+
if level in data.keys():
26+
data[level].append(node)
27+
else:
28+
data[level] = [node]
29+
for level, nodes in data.items():
30+
print(level, len(nodes))
31+
32+
# 添加颜色
33+
for node in G.nodes:
34+
G.nodes[node]['title'] = str(node)
35+
level = G.nodes[node]['level']
36+
37+
if level == 0:
38+
G.nodes[node]['color'] = 'red'
39+
elif level == 1:
40+
G.nodes[node]['color'] = 'orange'
41+
elif level == 2:
42+
G.nodes[node]['color'] = 'yellow'
43+
44+
# 给下线前十的目标添加颜色
45+
degrees = G.out_degree()
46+
top_nodes = sorted(degrees, key=lambda x: x[1], reverse=True)[:10]
47+
print(top_nodes)
48+
49+
for node in top_nodes:
50+
G.nodes[node[0]]['color'] = 'green'
51+
52+
nt = net.Network('960px', '1280px', directed=True)
53+
nt.from_nx(G)
54+
nt.show('1_evidence.html')
55+

0 commit comments

Comments
 (0)