簡體   English   中英

如何在沒有 Anaconda/Spyder 的情況下查看使用 NetworkX 庫創建的圖形?

[英]How do I view graphs created using NetworkX library without Anaconda/Spyder?

我正在學習離散數學課程。 學生應該使用NetworkX庫來可視化圖形。 講師和助教正在使用 Spyder 和 Anaconda。 而且我沒有使用它們的計划。 我無法查看由 NetworkX 庫創建的圖形。 其余代碼完美運行。 這是一個示例:

import networkx as nx
G = nx.Graph()
for i in range(1, 6):
    G.add_node(i)

G.add_edge(1, 2)
G.add_edge(2, 3)
G.add_edge(3, 4)
G.add_edge(4, 5)
G.add_edge(1, 6)

print(G.nodes())
print(G.edges())

nx.draw(G)

這是輸出:

[1, 2, 3, 4, 5, 6]
[(1, 2), (1, 6), (2, 3), (3, 4), (4, 5)]


------------------
(program exited with code: 0)
Press return to continue

所以最后一行沒有打印。 將其更改為print(nx.draw(G))只會在輸出的末尾添加一個None 我曾嘗試使用 Geany、VS Code 和終端 (Bash),但看不到圖表。 我該怎么辦?

如何在不使用 Anaconda/Spyder 的情況下查看圖表?

您可以使用 matplotlib,您只需將 nx.draw 上的參數設置為 matplotlib 圖形的軸,例如:

import matplotlib.pyplot as plt

def draw_graph(nx_graph):
    fig, axes = plt.subplots(1,1,dpi=72)
    nx.draw(nx_graph, pos=nx.spring_layout(nx_graph), ax=axes, with_labels=True)
    plt.show()

networkx 文檔建議使用更具體的專用工具進行圖形可視化,但這適用於基礎知識。 參見: https : //networkx.github.io/documentation/stable/reference/drawing.html

這可以通過將圖形視為外部圖像來解決。 生成圖形時,可以在不同的窗口中將其視為圖像,也可以將其保存到當前目錄。

需要從包matplotlib中導入一個名為pyplot的子模塊來執行此操作。

假設使用nx.draw(graph-name)繪制nx.draw(graph-name) 在 Spyder 中,它會自動輸出圖形。 但這不會發生在終端。

我們可以使用命令plt.show()查看生成的圖形。 我們將matplotlib.pyplot作為plt導入的地方。

plt.show()將在不同的窗口中顯示圖形,但不會保存圖形的副本。

如果要在當前目錄中保存圖形的副本,請使用plt.savefig('file-with-extension') 它將保存圖形的副本。

下面是一個例子:

>>> import networkx as nx
>>> import matplotlib.pyplot as plt
>>> G = nx.graph()
>>> nx.add_path(G, [0, 1, 2, 3])
>>> nx.draw(G, with_labels=1)
>>> plt.show()

口譯員會給你這個—— 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM