在做一个社交网络图的小型PJ,看到了很好用的Pyvis工具,但是自己写代码生成的HTML无论如何看不见交互界面……找了很久之后在stackoverflow上看到了原因。搬上原贴:
python - How to display buttons in pyvis visualization of NetworkX Graph? - Stack Overflow
我原来的代码是这样的
# 画图
net = Network(height='1400px',width='100%',bgcolor='#222222',filter_menu=True,select_menu=True, notebook=True,cdn_resources='remote',font_color="white") # 定义网络类
net.barnes_hut()
# 添加明星节点
net.add_nodes(selected_nodes[number[0]:number[1]],title = [nodes[selected_nodes[i]] for i in range(number[0],number[1])],\
color = ['#FF00FF' for i in range(number[0],number[1])],\
size = [200 for i in range(number[0],number[1])], label = [nodes[selected_nodes[i]] for i in range(number[0],number[1])])
# 添加第一梯队的followers
net.add_nodes(selected_nodes[number[1]:number[2]],title = [nodes[selected_nodes[i]] for i in range(number[1],number[2])],\
color = ['#82B0D2' for i in range(number[1],number[2])],\
size = [100 for i in range(number[1],number[2])])
net.add_edges(selected_edges[number[1]-number[1]:number[2]-number[1]])
# 添加第二梯队的followes
net.add_nodes(selected_nodes[number[2]:number[3]],title = [nodes[selected_nodes[i]] for i in range(number[2],number[3])],\
color = ['#7FFFAA' for i in range(number[2],number[3])],\
size = [80 for i in range(number[2],number[3])])
net.add_edges(selected_edges[number[2]-number[1]:number[3]-number[1]])
# 展示
net.toggle_physics(True)
net.show_buttons(filter_=True)
net.show('test.html')
无法呈现按钮,是因为在初始化Network类的时候把height设置成了1400px,width设置成了100%,太大了,按钮放不下。根据@Alex大佬的回答,改成一个固定数(800px),或者更小的比例(80%),就可以了。