其他
pyvis是专为关系网络而生,使用javascript渲染,所以效果比networkx更加的炫酷。当然使用javascript渲染的也有很多,比如pyecharts也可以处理关系网络,不过生成的节点不可以单独拖拽。
pyecharts与pyvis区别
具体可看下面的效果,红色为pyecharts,蓝色为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')
四、添加边
#一次添加一条边
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')
五、结合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')
六、交互调整
nxg = nx.complete_graph(5)
G = Network()G.from_nx(nxg)
#可对打开的html进行调整
G.show_buttons(filter_=['physics'])
G.show('demo3.html')
七、可在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')
八、权利游戏人物关系网络图
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
如果您还有疑问,可扫下方小程序码向大邓提问,大邓知无不言言无不尽!