pyvis是專爲關係網絡而生,使用javascript渲染,因此效果比networkx更加的炫酷。固然使用javascript渲染的也有不少,好比pyecharts也能夠處理關係網絡,不過生成的節點不能夠單獨拖拽。 javascript
pyecharts與pyvis區別
具體可看下面的效果,紅色爲pyecharts,藍色爲pyvishtml
語法與networkx近似,只要熟悉networkx就能很快使用pyvis。java
1、導入Networknode
from pyvis.network import Network net = Network()
2、添加節點網絡
#添加單個節點 net.add_node(1, label='Node 1') net.add_node(2, label='Node 2')
3、添加屬性echarts
#注意這裏是添加多個節點,使用add_nodes #屬性值傳入的是列表,要保證列表長度與節點列表長度一致 net.add_nodes([3,4,5], value=[10,20,30], title=["I am node 3", "node 4 here", "and im node 5"], x=[21.4, 54.2, 11.2], y=[100.2, 23.54, 32.1], label=["NODE 3", "NODE 4", "NODE 5"], color=["#00ff1e", "#162347", "#dd4b39"]) #顯示,輸出爲demo1.html net.show('demo1.html')
4、添加邊ide
#一次添加一條邊 net.add_edge(1, 2) net.add_edge(1, 3) net.add_edge(1, 4) #有權重邊 net.add_edge(2, 1, wright=0.87) #顯示,輸出爲demo1.html net.show('demo1.html')
5、結合networkx使用.net
from pyvis.network import Network import networkx as nx #生成5個節點,每一個點與其餘全部點相互聯繫 nxg = nx.complete_graph(5) G = Network() G.from_nx(nxg) #輸出並生成demo2.html G.show('demo2.html')
6、交互調整3d
nxg = nx.complete_graph(5) G = Network()G.from_nx(nxg) #可對打開的html進行調整 G.show_buttons(filter_=['physics']) G.show('demo3.html')
7、可在notebook中渲染code
#pyvis可在Jupyter中渲染 from pyvis.network import Network import networkx as nx G = Network(notebook=True) nxg = nx.complete_graph(10) G.from_nx(nxg)G.show('example.html')
8、權利遊戲人物關係網絡圖
from pyvis.network import Network import pandas as pd got_net = Network(notebook=True, height="750px", width="750px", bgcolor="#222222", font_color="white") # 這是pyvis中的文檔,可是卻沒有這個barnes_hut方法的任何說明 # 這裏我理解成一個用來存放邊數據的特殊空集合 got_net.barnes_hut() got_data = pd.read_csv("stormofswords.csv") sources = got_data['Source'] targets = got_data['Target'] weights = got_data['Weight'] edge_data = zip(sources, targets, weights) for e in edge_data: src = e[0] dst = e[1] w = e[2] #往空集合中添加節點和邊 got_net.add_node(src, src, title=src) got_net.add_node(dst, dst, title=dst) got_net.add_edge(src, dst, value=w) #對空集合中的數據進行處理,去重 neighbor_map = got_net.get_adj_list() #讓每一個節點顯示周圍的相鄰的人物關係 for node in got_net.nodes: node["title"] += " Neighbors:<br>" + "<br>".join(neighbor_map[node["id"]]) node["value"] = len(neighbor_map[node["id"]]) got_net.show("gameofthrones.html")
項目代碼下載
連接: https://pan.baidu.com/s/1o3BGGBaNiids4jqGQRJ4hA 密碼: hsjh