code: def plot (data, xcats, ycats=None, pconfig=None):
      
  
      if pconfig is None:
          pconfig = {}
  
      # Allow user to overwrite any given config for this plot
      if 'id' in pconfig and pconfig['id'] and pconfig['id'] in config.custom_plot_config:
          for k, v in config.custom_plot_config[pconfig['id']].items():
              pconfig[k] = v
  
      if ycats is None:
          ycats = xcats
  
      # Make a plot
      return highcharts_heatmap(data, xcats, ycats, pconfig)
docs: Plot a 2D heatmap.
      :param data: List of lists, each a representing a row of values.
      :param xcats: Labels for x axis
      :param ycats: Labels for y axis. Defaults to same as x.
      :param pconfig: optional dict with config key:value pairs.
      :return: HTML and JS, ready to be inserted into the page