[英]NetworkX extra labels when drawing graph with subset of nodes and edges
我發現了一個我無法重現的問題。 我目前正在使用MultiDiGraph,但只想顯示其中的一部分,問題是,顯示時,我不僅看到所選的節點和邊,還看不到圖形中的所有標簽。
我嘗試用簡單的方法重新創建錯誤,因為我的原始代碼是復雜的解釋方法。
import networkx as nx
import matplotlib.pyplot as plt
%matplotlib inline
gr = nx.MultiDiGraph()
gr.add_nodes_from(["192.168.1.1","192.168.1.2","192.168.1.3","192.168.1.4","192.168.1.5" ])
gr.add_edge("192.168.1.1", "192.168.1.2", key=1)
gr.add_edge("192.168.1.1", "192.168.1.3", key=2)
gr.add_edge("192.168.1.1", "192.168.1.4", key=3)
gr.add_edge("192.168.1.1", "192.168.1.5", key=4)
gr["192.168.1.1"]["192.168.1.2"][1]["color"] = 'b'
gr["192.168.1.1"]["192.168.1.3"][2]["color"] = 'b'
gr["192.168.1.1"]["192.168.1.4"][3]["color"] = 'b'
gr["192.168.1.1"]["192.168.1.5"][4]["color"] = 'b'
pos = nx.random_layout(gr)
plt.figure(figsize=(15, 7))
n=["192.168.1.1","192.168.1.2","192.168.1.3","192.168.1.4"]
e=[["192.168.1.1", "192.168.1.2", 1], ["192.168.1.1", "192.168.1.3", 2],
["192.168.1.1", "192.168.1.4", 3]]
colors = [gr[u][v][k]["color"] for u, v, k in e]
nx.draw_networkx(gr, with_labels=True, edge_color=colors, nodelist=n, edgelist=e)
這是我的形象得到,如期望的那樣發揮作用 ,但在我的代碼我得到這樣的(結果的分數): 錯誤
有人知道為什么要這么做嗎?
我自己為此找到了解決方案,以防萬一其他人碰到了,您可以單獨繪制節點,邊線和標簽。
import networkx as nx
l = {node: node for node in n}
nx.draw_networkx_nodes(G, pos=pos, node_color='black', alpha=0.9, node_size=60, nodelist=n)
nx.draw_networkx_edges(G, pos=pos, edge_color=colors, edgelist=e)
nx.draw_networkx_labels(G, pos=pos, font_size=8, font_color='black', labels=l)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.