code: def ts_heatmap(
      df,
      date_col,
      value_col,
      seasonal_interval,
      fig_width=8,
      fig_height=8,
      normalization=False,
      path=None,
      palette=palette.OrbitColorMap.BLUE_GRADIENT.value,
  ):
      """this function takes a time series dataframe and plot a time series heatmap with month on the y axis and
      year on the x axis
      Parameters
      -----------
      df : pandas data frame
          input df
      date_col : str
          the name of the date column
      value_col : str
          the name of the value
      seasonal_interval: int
          the desired seasonal_interval, this is used for the y axis
      fig_width : int, optional
          adjust width of the chart
      fig_height : int, optional,
          adjust height of the chart
      normalization : bool, optional
          normalize using mean and std
      path : str
          path to save the figure
      palette : str, optional
          color palette
  
      Returns
      -------
          a time series heatmap chart, with year as x axis, and desired seasonal interval as y axis
      """
      df = df[[date_col, value_col]]
      df[date_col] = pd.to_datetime(df[date_col])
      df = df.sort_values([date_col]).reset_index()
      length = df.shape[0]
      ses_interval = []
      for i in range(math.ceil(length / seasonal_interval)):
          ses_interval += [i] * seasonal_interval
      df["seasonal_interval"] = ses_interval[0:length]
      df["y_axis_interval"] = df["index"] % seasonal_interval
  
      # df['month'] = df[date_col].dt.month
      df_pivot = df.pivot_table(
          index="y_axis_interval",
          columns="seasonal_interval",
          values=value_col,
      ).sort_index(ascending=False)
      if normalization:
          df_pivot = (df_pivot - df_pivot.mean()) / df_pivot.std()
  
      fig, ax = plt.subplots(figsize=(fig_width, fig_height))
      ax = sns.heatmap(df_pivot, cmap=palette, linewidths=0.8)
  
      if normalization:
          ax.set_title(
              f"{value_col} Time Series Heatmap Normalized Index"
          )
  
      ax.set_title(f"{value_col} (Mean) Time Series Heatmap")
  
      if path:
          fig.savefig(path)
  
      plt.tight_layout()
      return ax, df, df_pivot
  
file_path: orbit/orbit/eda/eda_plot.py
imports: import seaborn
  from matplotlib import pyplot
  import pandas
  import math
  from orbit.constants import palette
  from orbit.utils.plot import orbit_style_decorator
label_desc: Use image node_id 1 for calling a global function with example usage: ts_heatmap(df, date_col, value_col, seasonal_interval, fig_width, fig_height, normalization, path, palette) and returns: ax,  df,  df_pivot