code: def multi_subplots_time(DataArray, SubSampleN=1, units='s', xlim=None, ylim=None, LabelArray=[], show_fig=True):
      
      unit_prefix = units[:-1] # removed the last char
      NumDataSets = len(DataArray)
  
      if LabelArray == []:
          LabelArray = ["DataSet {}".format(i)
                        for i in _np.arange(0, len(DataArray), 1)]
  
      fig, axs = _plt.subplots(NumDataSets, 1)
  
      for i, data in enumerate(DataArray):
          axs[i].plot(unit_conversion(data.time.get_array()[::SubSampleN], unit_prefix), data.voltage[::SubSampleN],
                      alpha=0.8, label=LabelArray[i])
          axs[i].set_xlabel("time ({})".format(units))
          axs[i].grid(which="major")
          axs[i].legend(loc="best")
          axs[i].set_ylabel("voltage (V)")
          if xlim != None:
              axs[i].set_xlim(xlim)
          if ylim != None:
              axs[i].set_ylim(ylim)
      if show_fig == True:
          _plt.show()
      return fig, axs
docs: plot the time trace on multiple axes
  
      Parameters
      ----------
      DataArray : array-like
          array of DataObject instances for which to plot the PSDs
      SubSampleN : int, optional
          Number of intervals between points to remove (to sub-sample data so
          that you effectively have lower sample rate to make plotting easier
          and quicker.
      xlim : array-like, optional
          2 element array specifying the lower and upper x limit for which to
          plot the time signal
      LabelArray : array-like, optional
          array of labels for each data-set to be plotted
      show_fig : bool, optional
         If True runs plt.show() before returning figure
         if False it just returns the figure object.
         (the default is True, it shows the figure) 
  
      Returns
      -------
      fig : matplotlib.figure.Figure object
          The figure object created
      axs : list of matplotlib.axes.Axes objects
          The list of axes object created