Multiple item selection interactive plot

Hello! I want to be able to select multiple items instead of only one or all.

My code:

def interactive_multi_plot(actual, forecast_1, forecast_2, title, addAll = True):
    fig = go.Figure()
        
    
    for column in forecast_1.columns.to_list():
        fig.add_trace(
            go.Scatter(
                x = forecast_1.index,
                y = forecast_1[column],
                name = "Forecast_SI"
            )

        )
    
        
        button_all = dict(label = 'All',
                      method = 'update',
                      args = [{'visible': forecast_1.columns.isin(forecast_1.columns),
                               'title': 'All',
                               'showlegend':True}])
        
    for column in forecast_2.columns.to_list():
        fig.add_trace(
            go.Scatter(
                x = forecast_2.index,
                y = forecast_2[column],
                name = "Forecast_LSTM" 
            )

        )
    
        
        button_all = dict(label = 'All',
                      method = 'update',
                      args = [{'visible': forecast_2.columns.isin(forecast_2.columns),
                               'title': 'All',
                               'showlegend':True}])
    for column in actual.columns.to_list():
        fig.add_trace(
            go.Scatter(
                x = actual.index,
                y = actual[column],
                name = "True values" 
            )

        )
    
        
        button_all = dict(label = 'All',
                      method = 'update',
                      args = [{'visible': actual.columns.isin(actual.columns),
                               'title': 'All',
                               'showlegend':True}])
        
    fig.layout.plot_bgcolor = '#010028'
    fig.layout.paper_bgcolor = '#010028'
    def create_layout_button(column):
        return dict(label = column,
                    method = 'update',
                    args = [{'visible': actual.columns.isin([column]),
                             'title': column,
                             'showlegend': True}])
    fig.update_layout(
        updatemenus=[go.layout.Updatemenu(
            active = 0,
            buttons = ([button_all] * addAll) +  list(actual.columns.map(lambda column: create_layout_button(column)))
            )
        ]     
    )
    # Update remaining layout properties
    fig.update_layout(
        title_text=title,
        height=800,
        font = dict(color='#fff', size=12)
    )
   
    
    fig.show()

I am new to plotly so any help is very much appreciated. Thank you so much :slight_smile: