code: def plot_cv_report(self, elevation=25, azimuth=35):
      if (
          len(self.C_group_l1_history) > 0
          and len(self.C_tv_history) > 0
      ):
          return self.plot_learning_curves_contour(elevation, azimuth)
      elif len(self.C_group_l1_history) == 0:
          return self.plot_learning_curves("Group L1")
      elif len(self.C_tv_history) == 0:
          return self.plot_learning_curves("TV")
      else:
          raise ValueError(
              "Logged Group L1 and TV penalisation levels "
              "history are empty."
          )
  
imports: import inspect
  import numpy
  from abc import ABC
  from operator import itemgetter
  from collections import namedtuple
  from sklearn.model_selection import StratifiedKFold
  from tick.base import Base
  from tick.prox import ProxZero, ProxMulti, ProxTV, ProxEquality, ProxGroupL1
  from tick.solver import SVRG
  from tick.survival import SimuSCCS, ModelSCCS
  from tick.preprocessing import LongitudinalSamplesFilter, LongitudinalFeaturesLagger
  from scipy.stats import uniform
  import matplotlib.pylab
  from mpl_toolkits.mplot3d import Axes3D
  from matplotlib import cm
  from tick.preprocessing.utils import check_longitudinal_features_consistency, check_censoring_consistency, safe_array
label_desc: Use image node_id 6 for calling the CrossValidationTracker obj's underlying member method code with example usage: obj.plot_cv_report(elevation, azimuth) and returns: self, self, self