==========================================================
Speciality wxmplot displays
==========================================================

There are a few custom classes for speciality plots included in
wxmplot.  Since these build on the :class:`PlotPanel` and
:class:`ImagePanel` clases, these are described briefly here and an
example shown for each.


MultiPlotFrame
==========================================================

.. class:: MultiPlotFrame(parent, rows=1, cols=1, framesize=(600, 350), **kws)

A MultiPlotFrame supports a grid of :class:`PlotPanel` on a single plot frame.

This supports the standard methods from :class:`PlotPanel`, with each
method taking and additional `panel` keyword argument that contains a
two-element tuple for the address of that panel in the grid of
:class:`PlotPanel` .  The address starts at (0, 0) for the upper left
plot panel, and counts to left to right and top to bottom.


.. method:: MultiPlotFrame.plot(self,x,y, panel=(0, 0), **kws)

   plot to specified panel.

.. method::  MultiPlotFrame.oplot(self,x,y, panel=(0, 0), **kws)

   overplot to specified panel.

.. method::  MultiPlotFrame.clear(self, panel=(0, 0))

   clear plot in specified panel

.. method::  MultiPlotFrame.configure(self, panel=(0, 0))

   configure plot in specified panel

Many more methods are supported -- essentially all of those for :class:`PlotFrame`.

MultiPlotFrame Example
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


.. literalinclude:: ../examples/multiplot.py

This gives a window with a plot that looks like this:

.. image:: images/multiplot.png
   :width: 85 %


StackedPlotFrame
==========================================================

.. class:: StackedPlotFrame(parent, framesize=(850, 450), panelsize=(550, 450), ratio=3, **kws)

This supports two :class:`PlotPanel`s stacked on top of one another,
and sharing an X axis.  Since the two plots are meant to share axes,
there is very little space between the plots, so that they share axes
labels.  Furthermore, zooming in on either plot panel zooms into the
corresponding X range for both panels. qThe `ratio` parameter sets the
ratio of the height of the top panel to the height of the bottom
panel.


:class:`StackedPlotFrame` supports most of the methods of
:class:`PlotFrame`, with the specific panel addressed either as
`panel='top'` or `panel='bot'`.

.. method:: StackedPlotFrame.plot(self,x,y, panel='top', **kws)

   plot to specified panel.

.. method:: StackedPlotFrame.oplot(self,x,y, panel='top', **kws)

   overplot to specified panel.

.. method:: StackedPlotFrame.clear(self, panel='top')

   clear plot in specified panel

.. method:: StackedPlotFrame.configure(self, panel='top')

   configure plot in specified panel


StackedPlotFrame Example
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. literalinclude:: ../examples/stackedplot.py

This gives a window with a plot that looks like this:

.. image:: images/stackedplot.png
   :width: 70 %

ImageMatrixFrame
==========================================================

.. class:: ImageMatrixFrame(parent, size=(900, 600), **kws)

An :class:`ImageMatrixFrame` supports the simultaneous display of 2
related images, such as 2-dimensional data taken at different
wavelengths or at different sampling times.  The display is presented
as a 2 x 2 grid, with the individual images displayed along the
diagonal (upper left to lower right).  These can be shown in any of
the simple color schemes of (red, green, blue, magenta, cyan, or
yellow), with user-controllable levels.

The upper right panel shows the superposition of the two individual
images.  The lower left panel shows the simple scatter plot of the
intensities of each image for every pixel in the image, illustrating
the correlation between the two images.

The user can zoom in on any of the images, and the other panels will
follow that zoom level.  Using the scatter plot, the user can draw a
lasso around any of the pixels.  These will then be highlighted on the
superposition image in the upper right panel.


.. method:: display( map1, map2, title=None, name1='Map1', name2='Map2',  xlabel='x', ylabel='y', x=None, y=None)

display two images or maps on the :class:`ImageMatrixFrame`


ImageMatrixFrame Example
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. literalinclude:: ../examples/imagematrix.py

This gives a window with a plot that looks like this:

.. image:: images/imagematrix.png
   :width: 85 %
