You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pyvis.network生成的HTML无法占满浏览器窗口,求解决方法及替代库

解决Pyvis网络可视化全屏显示问题

针对Pyvis的修复方案

你遇到的问题核心在于notebook=True会给生成的HTML套上适配Jupyter Notebook的容器样式,且百分比高度依赖父元素尺寸设置。可以试试以下几种方法:

1. 改用视口单位替代百分比

将height和width设为100vh和100vw(视口高度/宽度的100%),这种单位不依赖父元素尺寸,直接基于浏览器窗口:

import networkx as nx
from pyvis.network import Network

G = nx.Graph()
G.add_nodes_from([1,2,3])
G.add_edges_from([(1,2), (1,3)])

# 关闭notebook参数,改用视口单位
net = Network(height="100vh", width="100vw", directed=True, notebook=False)
net.from_nx(G)
net.show("simple_fullscreen.html")

2. 自定义CSS强制全屏

如果仍有问题,可通过set_options添加自定义CSS,强制容器和根元素占满屏幕:

import networkx as nx
from pyvis.network import Network

G = nx.Graph()
G.add_nodes_from([1,2,3])
G.add_edges_from([(1,2), (1,3)])

net = Network(height="100%", width="100%", directed=True, notebook=False)
net.from_nx(G)

# 添加自定义样式,确保html、body和容器无内外边距且占满全屏
net.set_options("""
{
  "layout": {
    "hierarchical": false
  },
  "nodes": {
    "shape": "dot"
  },
  "edges": {
    "color": "#999"
  },
  "physics": {
    "enabled": true
  },
  "css": "html, body { height: 100%; margin: 0; padding: 0; } #mynetwork { height: 100% !important; width: 100% !important; }"
}
""")

net.show("simple_fullscreen.html")

3. 关闭notebook模式

notebook=True是专为Jupyter环境设计的,会生成适配Notebook的iframe和样式。如果是在普通浏览器打开HTML文件,务必将该参数设为False。

替代可视化库推荐

如果Pyvis的适配仍达不到需求,可试试这些更适合全屏交互的库:

  • Plotly:支持交互式网络可视化,自带全屏按钮,缩放、拖拽体验流畅,响应式表现优秀。示例代码:

    import networkx as nx
    import plotly.graph_objects as go
    
    G = nx.Graph()
    G.add_nodes_from([1,2,3])
    G.add_edges_from([(1,2), (1,3)])
    pos = nx.spring_layout(G)
    
    edge_x = []
    edge_y = []
    for edge in G.edges():
        x0, y0 = pos[edge[0]]
        x1, y1 = pos[edge[1]]
        edge_x.extend([x0, x1, None])
        edge_y.extend([y0, y1, None])
    
    edge_trace = go.Scatter(
        x=edge_x, y=edge_y,
        line=dict(width=0.5, color='#888'),
        hoverinfo='none',
        mode='lines')
    
    node_x = [pos[node][0] for node in G.nodes()]
    node_y = [pos[node][1] for node in G.nodes()]
    
    node_trace = go.Scatter(
        x=node_x, y=node_y,
        mode='markers',
        hoverinfo='text',
        marker=dict(showscale=True, colorscale='YlGnBu', size=10))
    
    fig = go.Figure(
        data=[edge_trace, node_trace],
        layout=go.Layout(
            showlegend=False,
            hovermode='closest',
            margin=dict(b=20,l=5,r=5,t=40),
            xaxis=dict(showgrid=False, zeroline=False),
            yaxis=dict(showgrid=False, zeroline=False))
    )
    fig.write_html("plotly_fullscreen.html")
    
  • ipycytoscape:基于Cytoscape.js的Jupyter交互式库,支持全屏显示,节点样式和布局高度可定制,适合Notebook环境使用。

  • NetworkX + Matplotlib:如果只需要静态全屏图,可设置Matplotlib画布尺寸匹配屏幕分辨率:

    import networkx as nx
    import matplotlib.pyplot as plt
    
    G = nx.Graph()
    G.add_nodes_from([1,2,3])
    G.add_edges_from([(1,2), (1,3)])
    
    # 按屏幕分辨率设置画布尺寸(示例为1920*1080)
    plt.figure(figsize=(19.2, 10.8), dpi=100)
    nx.draw(G, with_labels=True)
    plt.savefig("fullscreen_static.png", bbox_inches='tight')
    plt.show()
    

内容的提问来源于stack exchange,提问作者user3732793

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:00:20