code: def plot_values(sweeps, names, metrics, filters):
      """Plots scatter plot of error versus metric for each metric and sweep."""
      m, n, c = len(metrics), len(sweeps), _COLOR_FILL
      fig, axes = fig_make(m, n, False, sharex="row", sharey=True)
      e_min = min(min(get_vals(sweep, "error")) for sweep in sweeps)
      e_max = max(max(get_vals(sweep, "error")) for sweep in sweeps)
      e_min, e_max = (
          e_min - (e_max - e_min) / 5,
          e_max + (e_max - e_min) / 5,
      )
      for i, j in [(i, j) for i in range(m) for j in range(n)]:
          metric, sweep, ax, f = (
              metrics[i],
              sweeps[j],
              axes[i][j],
              filters[j],
          )
          errs = get_vals(sweep, "error")
          vals = get_vals(sweep, metric)
          v_min, v_med, v_max = f[metric]
          f = [float(str("{:.3e}".format(f))) for f in f[metric]]
          l_rng, l_med = "[{}, {}]".format(
              f[0], f[2]
          ), "best: {}".format(f[1])
          ax.scatter(vals, errs, color=get_color(j), alpha=0.8)
          ax.plot([v_med, v_med], [e_min, e_max], c="k", label=l_med)
          ax.fill_between(
              [v_min, v_max],
              e_min,
              e_max,
              alpha=0.1,
              color=c,
              label=l_rng,
          )
          ax.legend(loc="upper left")
          ax.set_ylabel("error" if j == 0 else "")
          ax.set_xlabel(get_info(metric)[1])
      fig_legend(fig, n, names)
      return fig
  
file_path: pycls/pycls/sweep/plotting.py
imports: import matplotlib.lines
  import matplotlib.pyplot
  import matplotlib.ticker
  import numpy
  import pycls.models.regnet
  from pycls.sweep.analysis import get_info, get_vals, sort_sweep
label_desc: Use image node_id 8 for calling a global function with example usage: plot_values(sweeps, names, metrics, filters) and returns: fig