Python Plotly向子图添加多条轨迹后显示空白的问题求解
问题解决方案
1. 调整画布尺寸与布局
默认画布尺寸不足以容纳6×6共36张子图,会导致图形被挤压隐藏,需要手动指定画布参数:
plot_rows = 6 plot_cols = 6 # 创建子图时调整子图间距 fig = make_subplots( rows=plot_rows, cols=plot_cols, horizontal_spacing=0.04, vertical_spacing=0.04 ) # 全局设置画布总大小,关闭全局图例避免占用过多空间 fig.update_layout( height=1200, width=1800, showlegend=False )
你可以根据自己的显示需求调整height、width和间距参数的数值。
2. 测试渲染模式兼容性
部分环境下Scattergl的WebGL加速渲染存在兼容性问题,可先替换为普通Scatter验证:
将所有go.Scattergl替换为go.Scatter即可,修改后代码示例:
fig.add_trace(go.Scatter( x=df.index, y=df[df.columns[x]].values, name = df.columns[x], mode = 'lines' ), row=i, col=j)
3. 校验数据有效性
提前验证数据避免空值或索引异常导致无渲染内容:
# 绘图前执行校验 print(f"df列数:{len(df.columns)},df2列数:{len(df2.columns)}") # 列数需≥36 print(f"首列原始数据前5行:{df.iloc[:5, 0].values}") print(f"首列滤波数据前5行:{df2.iloc[:5, 0].values}") print(f"索引前5个值:{df.index[:5]}") # 确认索引不为空
4. 大数据量分批测试
如果单条曲线数据点超过100万,可先注释掉后续子图的渲染逻辑,仅保留前2~3张子图测试,排查是否是总数据量过大导致浏览器渲染超时。
5. Jupyter环境适配
如果在Jupyter Notebook/Lab中运行,需安装对应渲染扩展后重启内核:
# Jupyter Notebook 环境执行 pip install ipywidgets jupyter nbextension enable --py widgetsnbextension # Jupyter Lab 环境执行 jupyter labextension install jupyterlab-plotly
内容的提问来源于stack exchange,提问作者Iceberg_Slim
相关产品推荐
相关产品推荐

