def plot_sample_datashade(df, sample_name, vars_, sample_col = 'sample_id', **kwargs): 
    """
    Returns an hvplot object with the sample colored by an indicator 
    variable colored using datashading. This function is devised for 
    visualizing datasets with millions of datapoints. 

    Params
    ------
    df (pd.DataFrame)
        Annotated pandas dataframe. 

    sample_name (str)
        Name of the sample to be colored. 

    vars (list)
        Name of the xy variables for the scatter plot.

    sample_col(str, default = 'sample_id')
        Name of the column for which the sample_name will be selected from.

    kwargs 
        All kwargs go directly to format the hvplot object.  


    Returns 
    -------

    shader_plot ()
        Scatter plot colored by sample name using datashader. 

    """

    df_ = df.copy()
    # Assert sample in sample_col
    assert sample_name in df[sample_col].values 

    # Assert there are more than two vars to plot with 

    assert len(vars_) >= 2 

    # Make binary indicator var
    indicator_variable = [1 if smpl== sample_name else 0 for smpl in df[sample_col]]

    # Add variable to dataframe 
    df_[sample_name] = indicator_variable

    # Initialize plot for two variables  
    if len(vars_) == 2: 
        var_1, var_2  = vars_ 

        shader_plot = df_.hvplot.scatter(
            x = var_1, 
            y = var_2, 
            c = sample_name, 
            #width = 600,
            datashade = True, 
            **kwargs 
        )

    # Initialize plot for multiple variables 
    else : 

        shader_plot = df_.hvplot.scatter(
            x = vars_[0], 
            y = vars_[1:], 
            c = sample_name, 
            datashade = True, 
            **kwargs 
        )




    return shader_plot