Skip to content

6.0.0 fails to export WebGL to HTML file #5012

Closed

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

  1. 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)
  2. 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 🎉

  3. 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 🚀

  4. afeld commented on Mar 18, 2025

    @afeld
    Contributor

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

  5. 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