code: def covariance_plot(ax, Si, opts=None, unit=""):
      """Plots mu* against sigma or the 95% confidence interval"""
      if opts is None:
          opts = {}
  
      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="k", marker="o", **opts)
          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="k", marker="o", **opts)
          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
  
imports: import numpy
label_desc: Use image node_id 4 for calling a global function with example usage: covariance_plot(ax, Si, opts, unit) and returns: out