首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >彩色网络节点

彩色网络节点
EN

Stack Overflow用户
提问于 2019-01-29 02:23:31
回答 1查看 4.2K关注 0票数 1

我正在通过csv文件中的数据生成网络拓扑图,其中s0..s2和c1..c3是关系图的节点。

network.csv:

源、端口、目的地 s1,1,c3 s2,1,c1 s0,1,c2 s1,2,s2 s2,2,s0

我需要使所有的来源是蓝色和目的地是绿色的。在不覆盖源节点的情况下,我如何做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-29 07:45:18

以下是一个可行的解决办法:

代码语言:javascript
复制
import csv
import networkx as nx
from matplotlib import pyplot as plt

with open('../resources/network.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    edges = {(row['source'], row['destination']) for row in reader }
print(edges) # {('s1', 'c3'), ('s1', 's2'), ('s0', 'c2'), ('s2', 's0'), ('s2', 'c1')}

G = nx.DiGraph()
source_nodes = set([edge[0] for edge in edges])
G.add_edges_from(edges)
for n in G.nodes():
    G.nodes[n]['color'] = 'b' if n in source_nodes else 'g'

pos = nx.spring_layout(G)
colors = [node[1]['color'] for node in G.nodes(data=True)]
nx.draw_networkx(G, pos, with_labels=True, node_color=colors)
plt.show()

我们首先将csv读入边缘列表,该列表后来用于构造G。为了很好地定义每个源节点的颜色,我们将每个源节点设置为蓝色,将节点的其余设置为绿色(即也不是源节点的所有目标节点)。

我们还使用nx.draw_networkx来获得更紧凑的图形绘制实现。

其结果应该是:

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54412983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档