Changeset 2715


Ignore:
Timestamp:
01/07/13 19:29:32 (12 years ago)
Author:
Kana Sugimoto
Message:

New Development: No

JIRA Issue: No (minor improvements)

Ready for Test: Yes

Interface Changes: Yes

What Interface Changed: added a 'private' method, _subplotOk,

to check subplot layout in asaplotbase class.

Test Programs: do page iteration

Put in Release Notes: No

Module(s): asaplotbase, asapplotter, and sdplot

Description:

Implemented a better procedure to check if re-generation of
subplot instanses are necessary in page iteration.
Also, reset page counter when layout is changed by asapplotter.set_layout.


Location:
trunk/python
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/python/asaplotbase.py

    r2700 r2715  
    99from matplotlib.figure import Figure, Text
    1010from matplotlib.font_manager import FontProperties as FP
    11 from numpy import sqrt
     11from numpy import sqrt, ceil
    1212from matplotlib import rc, rcParams
    1313from matplotlib.ticker import OldScalarFormatter
     
    100100        return False
    101101
     102    def _subplotsOk(self, rows, cols, npanel=0):
     103        """
     104        Check if the axes in subplots are actually the ones plotted on
     105        the figure. Returns a bool.
     106        This method is to detect manual layout changes using mpl methods.
     107        """
     108        # compare with user defined layout
     109        if (rows is not None) and (rows != self.rows):
     110            return False
     111        if (cols is not None) and (cols != self.cols):
     112            return False
     113        # check number of subplots
     114        figaxes = self.figure.get_axes()
     115        np = self.rows*self.cols
     116        if npanel > np:
     117            return False
     118        if len(figaxes) != np:
     119            return False
     120        if len(self.subplots) != len(figaxes):
     121            return False
     122        # compare axes instance in this class and on the plotter
     123        ok = True
     124        for ip in range(np):
     125            if self.subplots[ip]['axes'] != figaxes[ip]:
     126                ok = False
     127                break
     128        return ok
    102129
    103130    ### Delete artists ###
  • trunk/python/asapplotter.py

    r2714 r2715  
    517517        self._rows = rows
    518518        self._cols = cols
     519        # new layout is set. need to reset counters for multi page plotting
     520        self._reset_counters()
    519521        if refresh and self._data: self.plot(self._data)
    520522        return
     
    949951        self._startrow = 0
    950952        self._ipanel = -1
     953        self._panelrows = []
    951954        self._reset_header()
    952         self._panelrows = []
    953955        if self.casabar_exists():
    954956            self._plotter.figmgr.casabar.set_pagecounter(1)
     
    10421044        if self._panelling == 'i':
    10431045            ganged = False
    1044         if not firstpage:
    1045             # not the first page just clear the axis
     1046        if (not firstpage) and \
     1047               self._plotter._subplotsOk(self._rows, self._cols, n):
     1048            # Not the first page and subplot number is ok.
     1049            # Just clear the axis
    10461050            nx = self._plotter.cols
    10471051            ipaxx = n - nx - 1 #the max panel id to supress x-label
Note: See TracChangeset for help on using the changeset viewer.