code: def plot_model(m, lower=-8.0, upper=8.0):
      pX = np.linspace(lower, upper, 100)[:, None]
      pY, pYv = m.predict_y(pX)
      if pY.ndim == 3:
          pY = pY[:, 0, :]
      plt.plot(X, Y, "x")
      plt.gca().set_prop_cycle(None)
      plt.plot(pX, pY)
      for i in range(pY.shape[1]):
          top = pY[:, i] + 2.0 * pYv[:, i] ** 0.5
          bot = pY[:, i] - 2.0 * pYv[:, i] ** 0.5
          plt.fill_between(pX[:, 0], top, bot, alpha=0.3)
      plt.xlabel("X")
      plt.ylabel("f")
      plt.title(f"ELBO: {m.elbo(data):.3}")
      plt.plot(Z, Z * 0.0, "o")
  
file_path: GPflow/doc/sphinx/notebooks/advanced/multioutput.pct.py
imports: import matplotlib.pyplot
  import numpy
  import gpflow
  from gpflow.ci_utils import reduce_in_tests
  from gpflow.utilities import print_summary
label_desc: Use image node_id 2 for calling a global function with example usage: plot_model(m, lower, upper) without return types