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
相关产品推荐
相关产品推荐

