code: def plot_ps_extra(dataobj, key, **kwargs):
      if isinstance(dataobj, pd.DataFrame):
          df_raw = dataobj
      else:
          df_raw = dataobj.data
      if kwargs.get('subquery', False):
          df = df_raw.query(kwargs.get('subquery'))
      else:
          df = df_raw
      def fancyfy(axes, N):
          for ax in axes[0:-1, :].flat:
              ax.set_xlabel('')
          for ax in axes[:, 1:].flat:
              ax.set_ylabel('')
      g = df.groupby('timestep')
      N = len(g.groups.keys())
      nrx = min((N, 5))
      nry = int(np.ceil(N / nrx))
      sizex = nrx * 3
      sizey = nry * 4 - 1
      fig, axes = plt.subplots(
          nry, nrx,
          sharex=True,
          sharey=True,
          figsize=(sizex, sizey),
      )
      axes = np.atleast_2d(axes)
      cbs = []
      for ax, (name, group) in zip(axes.flat, g):
          fig1, axes1, cb1 = plot_pseudosection_type2(
              group,
              key,
              ax=ax,
              log10=False,
              cbmin=kwargs.get('cbmin', None),
              cbmax=kwargs.get('cbmax', None),
          )
          cbs.append(cb1)
          ax.set_title('timestep: {0}'.format(int(name)))
          ax.xaxis.set_ticks_position('bottom')
          ax.set_aspect('equal')
      for cb in np.array(cbs).reshape(axes.shape)[:, 0:-1].flat:
          cb.ax.set_visible(False)
      fancyfy(axes, N)
      fig.tight_layout()
      return fig