code: def draw_core(
      self,
      x_tick: List[str] = None,
      y_tick: List[str] = None,
      color_bar=False,
      grey_scale=False,
  ):
      data = np.array(self.data)
      df_data = pd.DataFrame(data, x_tick, y_tick)
      sns.set(font_scale=1.5)  # label size
      if len(x_tick) > 30:
          annot = False
          annot_kws = None
      elif len(x_tick) > 10:
          annot = True
          annot_kws = {}
      else:
          annot = True
          annot_kws = {"size": 25}
      if grey_scale:
          self.label_ax = sns.heatmap(
              df_data,
              annot=annot,
              annot_kws=annot_kws,
              fmt="g",
              cbar=color_bar,
              cmap="Greys",
          )  # font size
      else:
          self.label_ax = sns.heatmap(
              df_data,
              annot=annot,
              annot_kws=annot_kws,
              fmt="g",
              cbar=color_bar,
          )
  
imports: import matplotlib.pyplot
  import numpy
  import pandas
  import seaborn
  import xai.constants
  from wordcloud import WordCloud
  import shap
  from xai.graphs.basic_graph import Graph
  from typing import List
  from collections import Counter
  import operator
  from xai.data.exceptions import NoItemsError
label_desc: Use image node_id 2 for calling the HeatMap obj's underlying member method code with example usage: obj.draw_core(x_tick, y_tick, color_bar, grey_scale) without return types