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

Plotly绘制大量3D子图时WebGL实例数量受限的解决方法咨询

Plotly绘制大量3D子图时WebGL实例数量受限的解决方法咨询

嗨,我最近在用Python和Plotly绘制包含大量(≥25个)3D曲面子图的图形时遇到了问题,想请教一下大家怎么解决~

我发现每个3D子图都会启动一个新的WebGL实例,而浏览器对同时运行的WebGL实例数量有限制,导致部分子图无法正常渲染。浏览器控制台里还反复出现这样的警告:

WARNING: Too many active WebGL contexts. Oldest context will be lost.

我之前看到Plotly有Virtual WebGL的方案可以绕过这个限制,但目前只找到它在Jupyter Notebook中的使用方法,而我是在PyCharm里运行普通的.py脚本,不知道怎么在这种场景下应用。

下面是能复现问题的示例代码:

import plotly.graph_objects as go
import numpy as np
from plotly.subplots import make_subplots

N = 64
nx, ny = 5, 5

z = [0, 1, 2]
y = [0, 1, 2]
x = [0, 1, 2]

xy, yx = np.meshgrid(x, y)
xz, zx = np.meshgrid(x, z)
zy, yz = np.meshgrid(z, y)

zsurf = go.Surface(y=yx, x=xy, z=np.ones(xy.shape), showscale=False)
ysurf = go.Surface(x=xz, z=zx, y=np.ones(xz.shape), showscale=False)
xsurf = go.Surface(z=zy, y=yz, x=np.ones(zy.shape), showscale=False)

specs = np.tile(np.array({"type": "scene"}), [nx, ny]).tolist()

fig = make_subplots(nx, ny, specs=specs)

for ii in range(nx):
    for jj in range(ny):
        fig.add_trace(zsurf, row=ii+1, col=jj+1)
        fig.add_trace(ysurf, row=ii+1, col=jj+1)
        fig.add_trace(xsurf, row=ii+1, col=jj+1)

fig.show()

运行这段代码后,浏览器里的部分3D子图无法正常显示,出现了空白或渲染异常的情况。

想请教大家,我该怎么修改这个脚本才能让所有子图都正常显示呢?不管是通过使用Virtual WebGL,还是其他可行的方法都可以,非常感谢!

备注:内容来源于stack exchange,提问作者noobnoob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 10:38:07