class_docstr: Render component stored in `state`'s dot-separated path to property (i.e. `a.b` results in `state.a.b`)
  
  Parameters
  ----------
  property: str
      dot-separated path to property (i.e. `a.b` results in `state.a.b`)
  transform_fn: Optional[Callable], default = None
      if specified, call the provided function with the object extracted from `state`'s `property`.
      Returned transformation is then passed into render function
  namespace: Optional[str], default = None
      namespace to use; can be nested like `ns_a.ns_b.ns_c`
code: def _render(self, state: AnalysisState) -> None:
      obj = state
      for p in self.property.split("."):
          obj = obj[p]
      if self.transform_fn is not None:
          obj = self.transform_fn(obj)
      self.display_obj(obj)
  
imports: from typing import Callable, Dict, List, Optional, Union
  from IPython.display import display
  from ipywidgets import HBox, Layout, Output, Tab
  from ..None import AnalysisState
  from .base import AbstractVisualization
  from .jupyter import JupyterMixin
  from ..state import is_key_present_in_state
label_desc: Use image node_id 3 for calling the PropertyRendererComponent obj's underlying member method code with example usage: obj._render(state) without return types