code: def draw_core(
      self, limit_size=Const.DEFAULT_LIMIT_SIZE, TOP_K_CLASS=10
  ):
      conf = np.array(self.data[Const.KEY_PROBABILITY])
      gt = np.array(self.data[Const.KEY_GROUNDTRUTH])
      num_sample = len(conf)
      if num_sample > limit_size:
          idx = np.random.rand(num_sample) < limit_size / num_sample
          conf = conf[idx]
          gt = gt[idx]
      else:
          conf = conf
      dict_counter = dict(Counter(gt))
      sorted_dict_counter = sorted(
          dict_counter.items(), key=operator.itemgetter(1)
      )[::-1]
      label_top_k = [a for (a, b) in sorted_dict_counter[:TOP_K_CLASS]]
      data_frame = {"predict_prob": conf, "gt": gt}
      df = pd.DataFrame(data_frame)
      self.label_ax = sns.violinplot(
          x="gt", y="predict_prob", data=df, order=label_top_k
      )
      plt.title(self.title)
  
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 ResultProbabilityForMultiClass obj's underlying member method code with example usage: obj.draw_core(limit_size, TOP_K_CLASS) without return types