NetworkX中为不同边组设独特色彩及添加孤立节点的技术问询
NetworkX有向图问题解决方案
问题1:为不同组的边设置独特颜色
你可以将三组边分别存储为独立列表,然后多次调用nx.draw_networkx_edges(),为每组边指定不同的颜色。修改后的代码如下:
import networkx as nx import matplotlib.pyplot as plt G = nx.DiGraph() # 分别保存三组边 set1_edges = [('A','B'),('A','C'),('C','B')] set2_edges = [('D','A'),('D','B'),('D','C')] set3_edges = [('E','D'),('E','B'),('E','C')] # 添加所有边到图中 G.add_edges_from(set1_edges) G.add_edges_from(set2_edges) G.add_edges_from(set3_edges) pos = nx.spring_layout(G) # 绘制节点 nx.draw_networkx_nodes(G, pos, node_size=500, node_color='green') # 分别绘制三组边,设置不同颜色 nx.draw_networkx_edges(G, pos, edgelist=set1_edges, edge_color='red') nx.draw_networkx_edges(G, pos, edgelist=set2_edges, edge_color='blue') nx.draw_networkx_edges(G, pos, edgelist=set3_edges, edge_color='orange') # 可选:添加节点标签提升可读性 nx.draw_networkx_labels(G, pos) plt.show()
你可以根据需求替换edge_color的取值,比如使用十六进制颜色码或Matplotlib支持的颜色名称。
问题2:添加孤立节点到有向图
add_edges_from()是专门用于添加边的方法,要求每个元素必须是表示边的2元组(如(u, v))或带属性的3元组(如(u, v, {'weight': 1})),单个节点不属于边结构,因此会触发报错。
要添加孤立节点,直接使用add_node()(单个节点)或add_nodes_from()(多个节点)方法即可,示例代码如下:
import networkx as nx import matplotlib.pyplot as plt G = nx.DiGraph() # 添加原有边 G.add_edges_from([('E','D'),('E','B'),('E','C')]) # 添加单个孤立节点Z G.add_node('Z') # 如果需要添加多个孤立节点,可使用: # G.add_nodes_from(['Z', 'Y', 'X']) pos = nx.spring_layout(G) nx.draw_networkx_nodes(G, pos, node_size=500, node_color='green') nx.draw_networkx_edges(G, pos) nx.draw_networkx_labels(G, pos) plt.show()
这样就能在有向图中成功添加无入度、无出度的孤立节点,且保持图的DiGraph类型不变。
内容的提问来源于stack exchange,提问作者PKrange
相关产品推荐
相关产品推荐

