code: def show_array(
      self,
      data: np.ndarray,
      spacing: typing.Tuple,
      color_map: typing.List,
  ) -> None:
      if self.import_vtk is False:
          return
      print("color_map:", color_map)
      self.num_block = len(np.unique(data))
      print("num_block:", self.num_block)
      self.reader = vtkImageImportFromArray()
      self.reader.SetArray(data)
      self.reader.SetDataSpacing(spacing)
      mbds = vtk.vtkMultiBlockDataSet()
      mbds.SetNumberOfBlocks(self.num_block - 1)
      for iter in range(1, self.num_block + 1):
          contour = self._get_mc_contour(iter)
          smoother = self._smoothing(
              self.smoothing_iterations,
              self.pass_band,
              self.feature_angle,
              contour,
          )
          mbds.SetBlock(iter, smoother.GetOutput())
      self._multidisplay(mbds, color_map)
  
file_path: PaddleSeg/EISeg/eiseg/widget/vtk.py
imports: import typing
  import numpy
  from qtpy.QtWidgets import QWidget, QVBoxLayout
label_desc: Use image node_id 4 for calling the VTKWidget obj's underlying member method code with example usage: obj.show_array(data, spacing, color_map) without return types