code: def plot_confusion_matrix(cm, class_names):
      """
      Returns a matplotlib figure containing the plotted confusion matrix.
  
      Args:
        cm (array, shape = [n, n]): a confusion matrix of integer classes
        class_names (array, shape = [n]): String names of the integer classes
      """
      figure = plt.figure(figsize=(8, 8))
      plt.imshow(cm, interpolation="nearest", cmap=plt.cm.Blues)
      plt.title("Confusion matrix")
      plt.colorbar()
      tick_marks = np.arange(len(class_names))
      plt.xticks(tick_marks, class_names, rotation=45)
      plt.yticks(tick_marks, class_names)
  
      # Normalize the confusion matrix.
      cm = np.around(
          cm.astype("float") / cm.sum(axis=1)[:, np.newaxis], decimals=2
      )
  
      # Use white text if squares are dark; otherwise black.
      threshold = cm.max() / 2.0
      for i, j in itertools.product(
          range(cm.shape[0]), range(cm.shape[1])
      ):
          color = "white" if cm[i, j] > threshold else "black"
          plt.text(
              j, i, cm[i, j], horizontalalignment="center", color=color
          )
  
      plt.tight_layout()
      plt.ylabel("True label")
      plt.xlabel("Predicted label")
      return figure
  
file_path: guildai/examples/tensorboard/images.py
imports: import os
  from datetime import datetime
  import io
  import itertools
  from packaging import version
  import tensorflow
  from tensorflow import keras
  import matplotlib.pyplot
  import numpy
  import sklearn.metrics
label_desc: Use image node_id 3 for calling a global function with example usage: plot_confusion_matrix(cm, class_names) and returns: figure