code: def _seaborn_viz_data_heatmap(
      data, colnames: List[str], missing: bool = False, **kwargs
  ):
      """Plots the data heatmap.
  
      Args:
          data: The dataframe
          colnames: The column names, used for tick labels
          missing: If True, plots missing values instead
          kwargs: Keyword arguments passed to seaborn.heatmap
  
      Returns:
          The seaborn figure
      """
      plot_options = {
          "cmap": "viridis" if not missing else "Greys",
          "robust": True,
          "center": 0 if not missing else 0.5,
          "xticklabels": False,
          "yticklabels": colnames,
          "cbar_kws": {"shrink": 0.5, "label": "z-score (bounded)"},
          "vmin": -3 if not missing else 0,
          "vmax": 3 if not missing else 1,
      }
  
      plot_options.update(kwargs)
  
      fig = Figure(
          figsize=(
              get_option("display.matplotlib.fig_width"),
              get_option("display.matplotlib.fig_height"),
          )
      )
      ax = fig.add_subplot(111)
      ax = sns.heatmap(data, ax=ax, **plot_options)
      ax.set_title("Data Heatmap")
      ax.set_xlabel("Record #")
      ax.set_ylabel("Variable")
      ax.set_yticklabels(colnames, rotation=0)
  
      return fig
  
imports: from typing import List
  import pandas
  import numpy
  from plotly.offline import init_notebook_mode, iplot
  from matplotlib.figure import Figure
  import seaborn
  import plotly.graph_objs
  from sklearn.preprocessing import StandardScaler
  from data_describe._widget import BaseWidget
  from data_describe.config._config import get_option
  from data_describe.compat import _is_dataframe, _requires, _in_notebook
  from data_describe.backends import _get_viz_backend, _get_compute_backend
label_desc: Use image node_id 4 for calling a global function with example usage: _seaborn_viz_data_heatmap(data, colnames, missing) and returns: fig