function a_plot = superposePlots(plots, axis_labels, title_str, command, props)
% superposePlots - Superpose multiple plot_stack objects that contain exact same contents.
%
% Usage:
% a_plot = superposePlots(plots, axis_labels, title_str, command, props)
%
% Description:
% The plot decoration will be taken from the last plot in the list,
% with the exception of legend labels.
%
% Parameters:
% plots: Array of plot_stack objects.
% axis_labels: Cell array of axis label strings (optional, taken from plots).
% title_str: Plot description string (optional, taken from plots).
% command: Plotting command to use (optional, taken from plots)
% props: A structure with any optional properties.
% noLegends: If exists, no legends are created.
%
% Returns:
% a_plot: A plot_stack object.
%
% See also: plot_abstract, plot_abstract/plot, plot_abstract/plotFigure
%
% $Id$
%
% Author: Cengiz Gunay <cgunay@emory.edu>, 2006/06/14
% Copyright (c) 2007 Cengiz Gunay <cengique@users.sf.net>.
% This work is licensed under the Academic Free License ("AFL")
% v. 3.0. To view a copy of this license, please look at the COPYING
% file distributed with this software or visit
% http://opensource.org/licenses/afl-3.0.php.
if ~ exist('props', 'var')
props = struct;
end
num_plot_stacks = length(plots);
if num_plot_stacks > 1
num_plots = length(plots(1).plots);
for plot_num = 1:num_plots
% group corresponding subplots in an array
plot_stacks = {};
for plot_stack_num = 1:num_plot_stacks
plot_stacks{plot_stack_num} = plots(plot_stack_num).plots{plot_num};
end
% recurse to handle sub-plot_stacks
% collect results in first plot_stack
% plot_superpose should call superposePlots if plots are the same class
plots(1).plots{plot_num} = plot_superpose(plot_stacks);
end
end
a_plot = plots(1);
a_plot = set(a_plot, 'props', mergeStructs(props, get(a_plot, 'props')));
if exist('title_str', 'var')
a_plot = set(a_plot, 'title', title_str);
end