def covariance_plot(ax, Si, param_dict, unit=""):
    
    if Si['sigma'] is not None:
        # sigma is not present if using morris groups         
        y = Si['sigma']
        out = ax.scatter(Si['mu_star'], y, c=u'k', marker=u'o',
                 **param_dict)
        ax.set_ylabel(r'$\sigma$')
        
        ax.set_xlim(0,)
        ax.set_ylim(0,)
        
        x_axis_bounds = np.array(ax.get_xlim())
    
        line1, = ax.plot(x_axis_bounds, x_axis_bounds, 'k-')
        line2, = ax.plot(x_axis_bounds, 0.5 * x_axis_bounds, 'k--')
        line3, = ax.plot(x_axis_bounds, 0.1 * x_axis_bounds, 'k-.')
     
        ax.legend((line1, line2, line3), (r'$\sigma / \mu^{\star} = 1.0$',
                                          r'$\sigma / \mu^{\star} = 0.5$',
                                          r'$\sigma / \mu^{\star} = 0.1$'),
                  loc='best')
    
    else:
        y = Si['mu_star_conf']
        out = ax.scatter(Si['mu_star'], y, c=u'k', marker=u'o',
                 **param_dict)
        ax.set_ylabel(r'$95\% CI$')

    ax.set_xlabel(r'$\mu^\star$ ' + unit)
    ax.set_ylim(0-(0.01 * np.array(ax.get_ylim()[1])), )

    return out
Plots mu* against sigma or the 95% confidence interval
dataset/ETHPy150Open SALib/SALib/SALib/plotting/morris.py/covariance_plot