code: def plot_joint_marginals(samples, parameters, y_axis_label):
      name_to_index = {
          param_to_name[param]: i for i, param in enumerate(parameters)
      }
      f, axs = plt.subplots(
          1, 3, figsize=(12, 4), constrained_layout=True
      )
  
      axs[0].plot(
          samples[name_to_index[".likelihood.variance"]],
          samples[name_to_index[".kernel.variance"]],
          "k.",
          alpha=0.15,
      )
      axs[0].set_xlabel("noise_variance")
      axs[0].set_ylabel("signal_variance")
  
      axs[1].plot(
          samples[name_to_index[".likelihood.variance"]],
          samples[name_to_index[".kernel.lengthscales"]],
          "k.",
          alpha=0.15,
      )
      axs[1].set_xlabel("noise_variance")
      axs[1].set_ylabel("lengthscale")
  
      axs[2].plot(
          samples[name_to_index[".kernel.lengthscales"]],
          samples[name_to_index[".kernel.variance"]],
          "k.",
          alpha=0.1,
      )
      axs[2].set_xlabel("lengthscale")
      axs[2].set_ylabel("signal_variance")
      f.suptitle(y_axis_label)
      plt.show()
  
file_path: GPflow/notebooks/advanced/mcmc.pct.py
imports: import matplotlib.pyplot
  import numpy
  import tensorflow
  import tensorflow_probability
  from multiclass_classification import colors, plot_from_samples
  from tensorflow_probability import distributions
  import gpflow
  from gpflow import set_trainable
  from gpflow.ci_utils import reduce_in_tests
label_desc: Use image node_id 5 for calling a global function with example usage: plot_joint_marginals(samples, parameters, y_axis_label) without return types