其他分享
首页 > 其他分享> > 使用pyvis对社交网路数据可视化

使用pyvis对社交网路数据可视化

作者:互联网

pyvis是专为关系网络而生,使用javascript渲染,所以效果比networkx更加的炫酷。当然使用javascript渲染的也有很多,比如pyecharts也可以处理关系网络,不过生成的节点不可以单独拖拽。

pyecharts与pyvis区别
具体可看下面的效果,红色为pyecharts,蓝色为pyvis

使用pyvis对社交网路数据可视化

使用pyvis对社交网路数据可视化

语法与networkx近似,只要熟悉networkx就能很快使用pyvis。

一、导入Network


from pyvis.network import Network

net = Network()

二、添加节点


#添加单个节点
net.add_node(1, label='Node 1')
net.add_node(2, label='Node 2')

三、添加属性

#注意这里是添加多个节点,使用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对社交网路数据可视化

四、添加边


#一次添加一条边
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对社交网路数据可视化

五、结合networkx使用


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对社交网路数据可视化

六、交互调整


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

#可对打开的html进行调整
G.show_buttons(filter_=['physics'])
G.show('demo3.html')

使用pyvis对社交网路数据可视化

七、可在notebook中渲染

#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对社交网路数据可视化

八、权利游戏人物关系网络图


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

标签:node,Network,add,可视化,got,net,pyvis,网路
来源: https://blog.51cto.com/15069487/2581491