#!/usr/bin/python # -*- coding: utf-8 -*- # # ================= FILE HEADER ======================================== # # myplotlib v0.0.0, # # @file myAxes.py # @author Yori 'AGy' Fournier # @licence CC-BY-SA # # MyAxes class: Overlay of matplotlib Axes class # It is done such that the user can concentrate on # the important aspect of the figure and not the # technical part. It consists of a constructor, # that requires a Figure, the ratio of the xaxis over # the yaxis, and the frame in which the figure # should be plotted. # # @Class MyAxes # # @Constructor(self, fig, ratio, frame, +user defined kw): # # @section Functions # # - plotting: this is the overwritten function # from Axes. It is called by it's # parent-figure's function .plot() # # - formatRawData: it computes out of the rawData # given as argument some quantities that # are returned as a dictionary and # become accessable for plotting. # # @section History # # v 0.0.0 - MyAxes class for the myplotlib module, consists # of a constructor, a pltting function and # formatRawData. # # ====================================================================== # # # IMPORT --------------------------------------------------------------- from . import SEVR, DBUG from . import Axes from . import rcParams # Class MyAxes Overwriting Matplotlib.figure.Axes class MyAxes(Axes): # CONSTRUCTOR -------------------------------------------------------- def __init__(self, fig, ratio, frameRect, *args, **kwargs): # get the frame allowed framePosX, framePosY, frameWidth, frameHeight = frameRect # get the size of the figure figWidth = fig.get_figwidth() figHeight = fig.get_figheight() figDpi = fig.get_dpi() # get the font size in inches fontsize = rcParams['font.size'] / figDpi # the largest width and height allowed in inches maxWidth = figWidth * frameWidth - 8. * (figDpi / 75.) * fontsize maxHeight = figHeight * frameHeight - 4. * (figDpi / 75.) * fontsize # the hypothetical width and height in inches # for a given aspect ratio hypoWidth = maxHeight / ratio hypoHeight = maxWidth * ratio # if the hypothetical width is larger that the # maximum allowed width (in inches) then chose # the hypothetical Height if (hypoWidth > maxWidth): height = hypoHeight / figHeight # height in percent width = maxWidth / figWidth # width in percent posX = framePosX + 4. * (figDpi / 75.) * fontsize / figWidth # posX posY = framePosY + 3. * (figDpi / 75.) * fontsize / figHeight # posY else: height = maxHeight / figHeight width = hypoWidth / figWidth posX = framePosX + (frameWidth - width) / 2. posY = framePosY + 3. * (figDpi / 75.) * fontsize / figHeight rect = [posX, posY, width, height] # parent constructor Axes.__init__(self, fig, rect, **kwargs) # PLOTTING ----------------------------------------------------------- # the plotting function (need to be overwrite from child def plotting(self): pass # FORMATTING --------------------------------------------------------- def formatRawData(self, rawdata): pass