E2B icon indicating copy to clipboard operation
E2B copied to clipboard

Python HTML Chart Output Fragmented in Sandbox while R Charts Display Correctly

Open Thimows opened this issue 1 year ago • 2 comments

Describe the bug HTML output from Python visualization libraries (Plotly/Bokeh) in the sandbox is fragmented into multiple objects, resulting in incomplete rendering. This issue appears specific to Python HTML-generating chart libraries, as the same charts created with R display correctly with complete HTML output.

To Reproduce

const code = `
    import plotly.express as px
    import pandas as pd
    
    data = {
        'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
        'Sales': [20, 35, 30, 40, 55, 60]
    }
    
    df = pd.DataFrame(data)
    
    fig = px.line(df, x='Month', y='Sales', title='Monthly Sales')
    
    fig.update_layout(
        xaxis_title='Month',
        yaxis_title='Sales ($1000s)',
        template='plotly_white'
    )
    
    fig.show()
`
await sandbox.runCode(code, {
    language: 'python',
    onResult: async result => {
        if ('html' in result && result.html) {
          // Truncate the output for demo purposes
          console.log('HTML Output: ', result.html.substring(0, 200))
    }
})

Expected output: Complete HTML in a single object (as seen with R charts)

Actual output:

HTML Output: <script type="text/javascript"> window.PlotlyConfig = {MathJaxConfig: 'local'}; if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Confi
HTML Output:  <div><div id="0bd7d700-2c9b-441c-84b4-084dce8b1bea" class="plotly-graph-div" style="height:525px; width:100%;"></div><script type="text/javascript">

Additional context: The same visualization created with R in the sandbox produces a single complete HTML output without fragmentation.

"e2b": "^1.2.0-beta.0" "@e2b/cli": "^1.3.2" "@e2b/code-interpreter": "^1.2.0-beta.1"

Thimows avatar Apr 05 '25 09:04 Thimows

Hi @jakubno, sorry for the tag! I noticed you were assigned the ticket and just wanted to check if you need any additional information about the bug. It’s currently kinda blocking our launch since we need to support interactive charting libraries like Plotly and Bokeh that return HTML in the Python runtime

Happy to provide more details if needed, just let me know!

Thimows avatar May 24 '25 18:05 Thimows