myAxes.py 2.99 KB
Newer Older
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/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 ---------------------------------------------------------------
45
46
47
from . import SEVR, DBUG
from . import Axes
from . import rcParams
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
48
49
50
51
52
53


# Class MyAxes Overwriting Matplotlib.figure.Axes
class MyAxes(Axes):
  
    # CONSTRUCTOR --------------------------------------------------------
54
    def __init__(self, fig, ratio, frameRect, *args, **kwargs):
55
56
57
58
        
        self.fig = fig
        
        rect = self.computeRect(ratio, frameRect, *args, **kwargs)
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
59
60
        kwargs.pop('forceRatioOnWidth', None)
        kwargs.pop('forceRatioOnHeight', None)
61
62
63
64
65
66
67
68
69
        
        # parent constructor
        Axes.__init__(self, fig, rect, **kwargs)
    
    
    # COMPUTE RECT -------------------------------------------------------
    def computeRect(self, ratio, frameRect, *args, **kwargs):
        
        # Get the optional keyword
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
70
71
        forceRatioOnWidth = kwargs.pop('forceRatioOnWidth', None)
        forceRatioOnHeight = kwargs.pop('forceRatioOnHeight', None)
72
        
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
73
74
        # get the frame allowed
        framePosX, framePosY, frameWidth, frameHeight = frameRect
75
76
        
        if(forceRatioOnWidth):
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
77
            rect = [framePosX, framePosY, frameHeight/ratio, frameHeight]
78
        elif(forceRatioOnHeight):
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
79
            rect = [framePosX, framePosY, frameWidth, frameWidth*ratio]
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
80
        else:
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
81
            rect = [framePosX, framePosY, frameWidth, frameHeight]
82
83
            
        return(rect)
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
84
        
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
85
86
87
    # PLOTTING -----------------------------------------------------------
    # the plotting function (need to be overwrite from child
    def plotting(self):
88
        pass
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
89
90
91
   
    # FORMATTING ---------------------------------------------------------
    def formatRawData(self, rawdata):
92
        pass