【发布时间】:2020-12-08 02:19:15
【问题描述】:
我想创建一个图表,其中节点根据列中的值具有不同的权重和颜色。
数据样本是
| Node | Weight | Colour | Neighbours |
|---|---|---|---|
| 1 | 23 | red | [3,5] |
| 3 | 18 | blue | [2] |
| 4 | 50 | blue | [] |
| 5 | 18 | blue | [1] |
| 2 | 36 | green | [3] |
上表按节点显示链接:
- 节点 1 与 3 和 5 链接。它的权重为 23,颜色为红色
- 节点 2 与 3 链接。它的权重为 36,颜色为绿色
- 节点 3 与 2 链接。它的权重为 18,颜色为蓝色
- 节点 4 没有链接。它的颜色为蓝色,重量为 50
- 节点 5 与 1 链接。它的权重为 18,颜色为蓝色
为了构建网络,我做了如下操作
d = dict(df.drop_duplicates(subset=['Node','Colour'])[['Node','Colour']].to_numpy().tolist())
nodes = G.nodes()
plt.figure(figsize=(30,30))
pos = nx.draw(G, with_labels=True,
nodelist=nodes,
node_color=[d.get(i,'lightgreen') for i in nodes],
node_size=1000)
不幸的是颜色都错了!另外,我很难添加有关权重的信息。
节点之间的关系应该分配给它们的权重。
我已经尝试在nx.draw 中使用edge_attr='weight',其中'weight' = df['Weight']。
我希望你能给我一些帮助,让我知道我做错了什么。
【问题讨论】: