使用pyvis對社交網路數據可視化

pyvis是專爲關係網絡而生,使用javascript渲染,因此效果比networkx更加的炫酷。固然使用javascript渲染的也有不少,好比pyecharts也能夠處理關係網絡,不過生成的節點不能夠單獨拖拽。 javascript

pyecharts與pyvis區別
具體可看下面的效果,紅色爲pyecharts,藍色爲pyvishtml

使用pyvis對社交網路數據可視化

使用pyvis對社交網路數據可視化

語法與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')

使用pyvis對社交網路數據可視化

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')

使用pyvis對社交網路數據可視化

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')

使用pyvis對社交網路數據可視化

6、交互調整3d

nxg = nx.complete_graph(5)
G = Network()G.from_nx(nxg)

#可對打開的html進行調整
G.show_buttons(filter_=['physics'])
G.show('demo3.html')

使用pyvis對社交網路數據可視化

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')

使用pyvis對社交網路數據可視化

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")

使用pyvis對社交網路數據可視化

項目代碼下載

連接: https://pan.baidu.com/s/1o3BGGBaNiids4jqGQRJ4hA 密碼: hsjh

相關文章
相關標籤/搜索