class_docstr: Internal base class.
  
  Concrete subclasses must implement plotting methods (e.g. `line`, `scatter`, `image`).
  A plotting method must call `self` which will effectively create a HoloViewsConverter
  and call it to return a HoloViews object.
  
  Concrete subclasses are meant to be mounted onto a datastructure property, e.g.:
  
  ```
  _patch_plot = lambda self: hvPlotTabular(self)
  _patch_plot.__doc__ = hvPlotTabular.__call__.__doc__
  plot_prop = property(_patch_plot)
  setattr(pd.DataFrame, 'hvplot', plot_prop)
  ```
class_docstr_tok: ["Internal","base","class",".","Concrete","subclasses","must","implement","plotting","methods","(","e.g",".","`","line","`",",","`","scatter","`",",","`","image","`",")",".","A","plotting","method","must","call","`","self","`","which","will","effectively","create","a","HoloViewsConverter","and","call","it","to","return","a","HoloViews","object",".","Concrete","subclasses","are","meant","to","be","mounted","onto","a","datastructure","property",",","e.g",".",":","``","`","_patch_plot","=","lambda","self",":","hvPlotTabular","(","self",")","_patch_plot.__doc__","=","hvPlotTabular.__call__.__doc__","plot_prop","=","property","(","_patch_plot",")","setattr","(","pd.DataFrame",",","'hvplot","'",",","plot_prop",")","``","`"]
code: def __init__(self, data, custom_plots={}, **metadata):
      if "query" in metadata:
          data = data.query(metadata.pop("query"))
      if "sel" in metadata:
          data = data.sel(**metadata.pop("sel"))
      if "isel" in metadata:
          data = data.isel(**metadata.pop("isel"))
      self._data = data
      self._plots = custom_plots
      self._metadata = metadata
  
imports: import itertools
  from collections import defaultdict
  import param
  from ..converter import HoloViewsConverter
  from ..util import is_list_like, process_dynamic_args
label_desc: Use image node_id 1 to create a new hvPlotBase object  with example: obj = hvPlotBase(data, custom_plots)