class_docstr: Block with ts features heatmap
class_docstr_tok: ["Block","with","ts","features","heatmap"]
code: def _plot(
      self, features: str, names: List[str]
  ) -> Tuple[go.Figure, ...]:
      if not names:
          return (
              EmptyFigure(height=self._height, text="Select a series"),
          )
  
      df_fts = self.df_fts.loc[_FTS[features], names].T
      lim_min = 0 if features == "main" else df_fts.min().min()
      lim_max = max(df_fts.max().max(), 1)
      plot_heat = viz.Heatmap(
          df_fts,
          colorbar_limit=(lim_min, lim_max),
          xrotation=45,
          height=min(self._height, 100 + 50 * len(names)),
      ).plot
      return (plot_heat,)
  
imports: from typing import List, Tuple, Callable
  import pandas
  from tslumen.plot import interactive
  from tslumen.plot.interactive.base import go
  from tslumen.report.dashboard.base import DashInput, DashSection, DashBlock
  from tslumen.report.dashboard._dash import dbc, html, Component, Plot, EmptyFigure
label_desc: Use image node_id 3 for calling the BlockTSFeaturesHeatmap obj's underlying member method code with example usage: obj._plot(features, names) and returns: plot_heat, EmptyFigure