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