Skip to content

Write Image as PDF with Box includes text "Loading [MathJax]/extensions/MathMenu.js" #3469

Description

@vincentliuheyang

Hi,

截屏2021-11-15 下午4 34 46

I am trying to write plot into PDF format, but I cannot get rid of this box saying "Loading [MathJax]/extensions/MathMenu.js", will you be able to tell me how should I fix it?

Here is the code I am using to generate the plot.

fig = go.Figure()
    fig.add_trace(go.Scatter(x=[0, 1, 2, 3, 4, 5], y=[0.5, 0.6, 0.7, 0.8, 0.9, 0.9], name='A',
                             line=dict(width=4), marker=dict(size=15, symbol='star')))
    fig.add_trace(go.Scatter(x=[0, 1, 2, 3, 4, 5], y=[0.4, 0.4, 0.4, 0.4, 0.4, 0.4], name='B',
                             line=dict(width=4), marker=dict(size=15, symbol='circle')))
    fig.add_trace(
        go.Scatter(x=[0, 1, 2, 3, 4, 5], y=[0.51, 0.52, 0.53, 0.54, 0.55, 0.56], name='C',
                   line=dict(width=4), marker=dict(size=15, symbol='x')))

    fig.update_layout(
        yaxis_range=[0.2, 1],
        legend=dict(
            x=0,
            y=0,
            traceorder="reversed",
            title_font_family="Times New Roman",
            font=dict(
                family="Courier",
                size=16,
                color="black"
            ),
            bgcolor="LightSteelBlue",
            bordercolor="Black",
            borderwidth=2
        )
    )
    fig.write_image("1.pdf")
    fig.show()

Activity

  1. empet commented on Nov 15, 2021

    @empet

    What Plotly version are you running? I checked your code with v 5.3.1 (the last one), and no such box is displayed.

  2. kuppu commented on Nov 15, 2021

    @kuppu

    I am getting the same box in PDF outputs with Plotly Version 5.3.1
    image

  3. empet commented on Nov 15, 2021

    @empet

    I have no idea why that box is displayed. It could be your browser?!!!

  4. vincentliuheyang commented on Nov 16, 2021

    @vincentliuheyang
    Author

    It only outputs such box if I am trying to write a PDF, the browser does not have such box. One peculiar issue is that if I am going to write multiple PDF plot in one file, this box will only show in the first PDF image.

  5. nicolaskruchten commented on Nov 16, 2021

    @nicolaskruchten
    Contributor

    This is pretty unfortunate. The cause is that the PDF is being generated by a browser essentially doing a print operation. If this happens while MathJax is still loading, then this box will appear in the output. @jonmmease any thoughts about how to wait a bit longer?

  6. vincentliuheyang commented on Nov 16, 2021

    @vincentliuheyang
    Author

    This is pretty unfortunate. The cause is that the PDF is being generated by a browser essentially doing a print operation. If this happens while MathJax is still loading, then this box will appear in the output. @jonmmease any thoughts about how to wait a bit longer?

    Just for now, my solution is writing a random plot before my official plot. Of course, I would like to see this problem resolved if possible.

  7. stansotn commented on Nov 16, 2021

    @stansotn

    I am having the same issue with plotly 5.4.0 and kaleido 0.2.1.post1. I suspect the issue is with the latest kaleido.

  8. willfindlay commented on Dec 5, 2021

    @willfindlay

    I'm also running into this with:

    plotly==5.4.0
    plotly-express==0.4.1
    kaleido==0.2.1
    

    Thanks for the workaround @vincentliuheyang, it works well for me.

  9. jlehrer1 commented on Dec 13, 2021

    @jlehrer1

    Same issue with exact same versions as @willfindlay. Is there any workaround?

  10. tahashmi commented on Dec 14, 2021

    @tahashmi

    Thanks to @vincentliuheyang.
    @jlehrer1 Try something like this :-) :

    import plotly.express as px
    
    #garbage graph
    fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])
    fig.show()
    fig.write_image("random.pdf")
    
    #actual graph to be replaced
    fig1 = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])
    fig1.show()
    fig1.write_image("random.pdf")
    
  11. jorgeboucas commented on Dec 14, 2021

    @jorgeboucas

    this worked for me:

    figure="some_figure.pdf"
    fig=px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])
    fig.write_image(figure, format="pdf")
    time.sleep(2)
    
    fig=make_figure(df,pa)
    fig.write_image(figure, format="pdf")
    

    plotly==5.3.1

  12. jlehrer1 commented on Dec 14, 2021

    @jlehrer1

    Thank you! I hadn't realized it was only on the first write when running a script. Interesting.

  13. eric-vader commented on Dec 15, 2021

    @eric-vader

    I am experiencing the same problem as well, do we know what causes the problem?

  14. nicolaskruchten commented on Dec 15, 2021

    @nicolaskruchten
    Contributor

    Yes, we know the basic cause, see plotly/Kaleido#122 for details.

    Note that if the figure you're rendering doesn't actually use MathJax then you can prevent MathJax from being loaded at all by Kaleido with:

    import plotly.io as pio   
    pio.kaleido.scope.mathjax = None

    Otherwise, if saving a "throwaway" PDF first helps, I would recommend that: basically save your figure twice.

  15. nicolaskruchten commented on Dec 15, 2021

    @nicolaskruchten
    Contributor

    Is anyone seeing this with Kaleido 0.1 ?

  16. 4 remaining items

  17. theo-brown commented on May 23, 2023

    @theo-brown

    Saving a dummy figure before the desired figure doesn't work for me.
    What browser does Plotly use by default for PDF saving? Could it be a browser-dependent issue?

  18. mjstahlberg commented on May 23, 2023

    @mjstahlberg

    Saving a dummy figure before the desired figure doesn't work for me.

    I think a time delay of a second may be necessary.

  19. zhimin-z commented on Aug 27, 2023

    @zhimin-z

    Yes, we know the basic cause, see plotly/Kaleido#122 for details.

    Note that if the figure you're rendering doesn't actually use MathJax then you can prevent MathJax from being loaded at all by Kaleido with:

    import plotly.io as pio   
    pio.kaleido.scope.mathjax = None

    Otherwise, if saving a "throwaway" PDF first helps, I would recommend that: basically save your figure twice.

    Hi, I tried but it did remove the watermark, but fails to render the math any more. I need the math formula to be shown, what can I do now? @nicolaskruchten

  20. Fratorhe commented on Feb 2, 2024

    @Fratorhe

    I am having the same issue, I have tried in Windows 10, WSL and Ubuntu...
    I am using the most recent versions of the libraries.
    An option could be to export to svg and then convert with inkscape (I tried with cairosvg and it does not render the mathjax).
    Any updates or alternatives?

  21. self-assigned this
    on Jul 11, 2024
  22. removed their assignment
    on Aug 2, 2024
  23. changed the title [-]Write Image as PDF with Box saying "Loading [MathJax]/extensions/MathMenu.js"[/-] [+]Write Image as PDF with Box includes text "Loading [MathJax]/extensions/MathMenu.js"[/+] on Aug 12, 2024
  24. added
    bugsomething broken
    P2considered for next cycle
    and removed
    P3backlog
    on Aug 12, 2024
  25. PatrickRWright commented on Feb 24, 2025

    @PatrickRWright

    I am getting this when running in R via plotly::save_image("afile.pdf").

    Here is the workaround for R:
    https://stackoverflow.com/questions/79464233/loading-mathjax-extensions-mathmenu-js-box-visible-in-pdf-when-running-plotl/

  26. emilykl commented on Aug 31, 2026

    @emilykl
    Contributor

    plotly.py v7.0.0 now bundles MathJax v3 rather than v2 (see #5684), and the message bar is no longer included in v3, so this is resolved.

    Note that Kaleido v1.4.0 or greater must be used for generating images, since that is the first version which uses MathJax v3 by default.

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

    P2considered for next cyclebugsomething broken

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions