code: def _get_hover_data(self, data, element):
          
          if 'hover' not in self.handles or self.static_source:
              return
  
          npath = len([vs for vs in data.values()][0])
          for d in element.vdims:
              dim = util.dimension_sanitizer(d.name)
              if dim not in data:
                  if element.level is not None:
                      data[dim] = np.full(npath, element.level)
                  elif element.interface.isscalar(element, d):
                      data[dim] = element.dimension_values(d, expanded=False)
                  else:
                      data[dim] = element.split(datatype='array', dimensions=[d])
              elif isinstance(data[dim], np.ndarray) and data[dim].dtype.kind == 'M':
                  data[dim+'_dt_strings'] = [d.pprint_value(v) for v in data[dim]]
  
          for k, v in self.overlay_dims.items():
              dim = util.dimension_sanitizer(k.name)
              if dim not in data:
                  data[dim] = [v for _ in range(len(list(data.values())[0]))]
docs: Initializes hover data based on Element dimension values.
          If empty initializes with no data.