在數據可視化領域,NetworkX 是一個強大的 Python 庫,用于創建、操作和研究復雜網絡的結構、動態和功能。本文將介紹如何使用 NetworkX 來繪制《Les Misérables》(《悲慘世界》)中的人物關系圖。
首先,確保你已經安裝了 NetworkX 和 Matplotlib。如果沒有安裝,可以使用以下命令進行安裝:
pip install networkx matplotlib
在開始之前,我們需要導入必要的庫:
import networkx as nx
import matplotlib.pyplot as plt
接下來,我們創建一個空的無向圖:
G = nx.Graph()
《Les Misérables》中的人物關系可以通過節點和邊來表示。節點代表人物,邊代表人物之間的關系。我們可以手動添加這些節點和邊,或者從外部數據源加載。
假設我們有以下人物關系數據:
# 人物列表
characters = ["Jean Valjean", "Javert", "Fantine", "Cosette", "Marius", "Thénardier", "éponine", "Enjolras"]
# 關系列表
relationships = [
("Jean Valjean", "Javert"),
("Jean Valjean", "Fantine"),
("Jean Valjean", "Cosette"),
("Fantine", "Cosette"),
("Cosette", "Marius"),
("Marius", "éponine"),
("Marius", "Enjolras"),
("Thénardier", "éponine"),
("Thénardier", "Cosette")
]
我們可以將這些數據添加到圖中:
# 添加節點
G.add_nodes_from(characters)
# 添加邊
G.add_edges_from(relationships)
現在,我們可以使用 Matplotlib 來繪制這個圖:
# 繪制圖
nx.draw(G, with_labels=True, node_color='lightblue', edge_color='gray', node_size=2000, font_size=10, font_weight='bold')
# 顯示圖
plt.show()
為了使圖更具可讀性,我們可以自定義節點和邊的樣式。例如,我們可以為不同的角色設置不同的顏色:
# 定義節點顏色
node_colors = {
"Jean Valjean": "red",
"Javert": "blue",
"Fantine": "green",
"Cosette": "pink",
"Marius": "orange",
"Thénardier": "purple",
"éponine": "brown",
"Enjolras": "gray"
}
# 獲取節點顏色列表
colors = [node_colors[node] for node in G.nodes()]
# 繪制圖
nx.draw(G, with_labels=True, node_color=colors, edge_color='gray', node_size=2000, font_size=10, font_weight='bold')
# 顯示圖
plt.show()
如果你想將圖保存為圖片文件,可以使用以下代碼:
plt.savefig("les_miserables_network.png", format="PNG")
通過以上步驟,我們成功地使用 NetworkX 和 Matplotlib 繪制了《Les Misérables》中的人物關系圖。這種方法不僅適用于小說中的人物關系,還可以應用于社交網絡、生物網絡等各種復雜網絡的繪制和分析。
希望這篇文章能幫助你更好地理解如何使用 Python 和 NetworkX 進行網絡圖的繪制。如果你有任何問題或建議,歡迎在評論區留言討論。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。