Skip to content

6.0.0 fails to export WebGL to HTML file #5012

Closed
@janba

Description

@janba

Plotly version 6.0.0 fails to output figure with WebGL content.

I create a 3D figure composed of Mesh3D and Scatter3D objects. The figure is shown using:

import plotly.graph_objs as go
import plotly.offline as py
# ...
fig = go.Figure(data=mesh_data, layout=lyt)
py.iplot(fig)

The figure displays fine - also in v 6.0.0 but when exporting to HTML, the resulting html file just has a blank space where the figure should be. It works as expected in 5.24.1 where the interactive graphics is present in the output html file.

When I display the web page and look a the source control, I see this error:

Image

Note that this is using MacOS and Safari, but it appears irrelevant whether I use Python 3.11 or 3.13. It also does not seem to matter whether I export from VS Code or Jupyter notebook. I am using plotly in teaching and became aware of the problem since students reported it on other platforms, so I am fairly confident it is an issue with Plotly.py - specifically plotly.offline. The workaround is, of course, to downgrade to 5.24.1.

Thanks!

Activity

arnaudh

arnaudh commented on Feb 6, 2025

@arnaudh

Also bumping into this issue. Here is the error in text form, to make it easy for others to find this issue:

big.html:40875 Uncaught TypeError: kP.select is not a function
    at Ehe (big.html:40875:259206)
    at Object.Yft [as _doPlot] (big.html:40875:255283)
    at Object.Qft [as newPlot] (big.html:40875:260707)
    at big.html:44733:344

We run into this on MacOS and linux. We export to HTML using papermill nbformat and nbconvert like so:

  
    import nbformat
    import papermill
    from nbconvert import HTMLExporter

    # Execute the notebook
    papermill.execute_notebook(
        input_path=input_nb_path,
        output_path=output_nb_path,
    )

    # Convert the executed notebook to HTML
    with open(output_nb_path) as f:
        nb_content = f.read()
        notebook = nbformat.reads(nb_content, as_version=4)
        html_exporter = HTMLExporter(template_name="lab")
        (html, _) = html_exporter.from_notebook_node(notebook)
        with open(output_html_path, "w") as f:
            f.write(html)
afeld

afeld commented on Mar 17, 2025

@afeld
Contributor

Figured this out: There was a bug in plotly.js 3.0.0 (plotly/plotly.js#7367), which was fixed in v3.0.1. Looks like plotly.py is upgrading plotly.js in 6.0.1, so hopefully that's released soon 🎉

afeld

afeld commented on Mar 17, 2025

@afeld
Contributor

Installed from the v6.0.1 tag and confirmed that solved the kP.select (which is d3.select, unminified) issue 🚀

afeld

afeld commented on Mar 18, 2025

@afeld
Contributor

6.0.1 was released, I think this can now be closed!

gvwilson

gvwilson commented on Mar 18, 2025

@gvwilson
Contributor

reported fixed in 6.0.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      6.0.0 fails to export WebGL to HTML file · Issue #5012 · plotly/plotly.py