Search code examples
pythonjupyter-notebookplotlyjupyterjupyter-lab

Plotly chart not showing in Jupyter notebook


I have been trying to solve this issue for hours. I followed the steps on the Plotly website and the chart still doesn't show in the notebook.

This is my code for the plot:

colorway = ['#f3cec9', '#e7a4b6', '#cd7eaf', '#a262a9', '#6f4d96', '#3d3b72', '#182844']

data = [
    go.Scatter(
        x = immigration.columns,
        y = immigration.loc[state],
                   name=state) for state in immigration.index]

layout = go.Layout(
    title='Immigration',
    yaxis=dict(title='Immigration %'),
    xaxis=dict(title='Years'),
    colorway=colorway,
    font=dict(family='Courier New, monospace', size=18, color='#7f7f7f')
)

fig = go.Figure(data=data, layout=layout)
iplot(fig)

And this is everything I have imported into my notebook:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import plotly.plotly as py
import plotly.graph_objs as go
from plotly.offline import init_notebook_mode, iplot

init_notebook_mode(connected=True)  

Solution

  • You need to change init_notebook_mode call and remove connected=True, if you want to work in offline mode.

    Such that:

    # Import the necessaries libraries
    import plotly.offline as pyo
    import plotly.graph_objs as go
    # Set notebook mode to work in offline
    pyo.init_notebook_mode()
    # Create traces
    trace0 = go.Scatter(
        x=[1, 2, 3, 4],
        y=[10, 15, 13, 17]
    )
    trace1 = go.Scatter(
        x=[1, 2, 3, 4],
        y=[16, 5, 11, 9]
    )
    # Fill out data with our traces
    data = [trace0, trace1]
    # Plot it and save as basic-line.html
    pyo.iplot(data, filename = 'basic-line')
    

    Output should be shown in your jupyter notebook:

    My example