def _plot_atomic_elpd(ax_, xdata, ydata, model1, model2, threshold, coord_labels, xlabels, xlabels_shown, ylabels_shown, plot_kwargs):
    marker = _validate_bokeh_marker(plot_kwargs.get('marker'))
    marker_func = getattr(mk, marker)
    sizes = (np.ones(len(xdata)) * plot_kwargs.get('s'))
    glyph = marker_func(x='xdata', y='ydata', size='sizes', line_color=plot_kwargs.get('color', 'black'))
    source = ColumnDataSource(dict(xdata=xdata, ydata=ydata, sizes=sizes))
    ax_.add_glyph(source, glyph)
    if (threshold is not None):
        diff_abs = np.abs((ydata - ydata.mean()))
        bool_ary = (diff_abs > (threshold * ydata.std()))
        if (coord_labels is None):
            coord_labels = xdata.astype(str)
        outliers = np.argwhere(bool_ary).squeeze()
        for outlier in outliers:
            label = coord_labels[outlier]
            ax_.text(x=np.asarray(outlier), y=np.asarray(ydata[outlier]), text=label, text_color='black')
    if ylabels_shown:
        ax_.yaxis.axis_label = 'ELPD difference'
    else:
        ax_.yaxis.minor_tick_line_color = None
        ax_.yaxis.major_label_text_font_size = '0pt'
    if xlabels_shown:
        if xlabels:
            ax_.xaxis.ticker = np.arange(0, len(coord_labels))
            ax_.xaxis.major_label_overrides = {str(key): str(value) for (key, value) in zip(np.arange(0, len(coord_labels)), list(coord_labels))}
    else:
        ax_.xaxis.minor_tick_line_color = None
        ax_.xaxis.major_label_text_font_size = '0pt'
    title = Title()
    title.text = '{} - {}'.format(model1, model2)
    ax_.title = title
def _plot_atomic_elpd(ax_, xdata, ydata, model1, model2, threshold, coord_labels, xlabels, xlabels_shown, ylabels_shown, plot_kwargs):
    marker = _validate_bokeh_marker(plot_kwargs.get('marker'))
    marker_func = getattr(mk, marker)
    sizes = (np.ones(len(xdata)) * plot_kwargs.get('s'))
    glyph = marker_func(x='xdata', y='ydata', size='sizes', line_color=plot_kwargs.get('color', 'black'))
    source = ColumnDataSource(dict(xdata=xdata, ydata=ydata, sizes=sizes))
    ax_.add_glyph(source, glyph)
    if (threshold is not None):
        diff_abs = np.abs((ydata - ydata.mean()))
        bool_ary = (diff_abs > (threshold * ydata.std()))
        if (coord_labels is None):
            coord_labels = xdata.astype(str)
        outliers = np.argwhere(bool_ary).squeeze()
        for outlier in outliers:
            label = coord_labels[outlier]
            ax_.text(x=np.asarray(outlier), y=np.asarray(ydata[outlier]), text=label, text_color='black')
    if ylabels_shown:
        ax_.yaxis.axis_label = 'ELPD difference'
    else:
        ax_.yaxis.minor_tick_line_color = None
        ax_.yaxis.major_label_text_font_size = '0pt'
    if xlabels_shown:
        if xlabels:
            ax_.xaxis.ticker = np.arange(0, len(coord_labels))
            ax_.xaxis.major_label_overrides = {str(key): str(value) for (key, value) in zip(np.arange(0, len(coord_labels)), list(coord_labels))}
    else:
        ax_.xaxis.minor_tick_line_color = None
        ax_.xaxis.major_label_text_font_size = '0pt'
    title = Title()
    title.text = '{} - {}'.format(model1, model2)
    ax_.title = title