def __create_axes(self, *args, **kwargs): """ Create an axes. :param position: (*list*) Optional, axes position specified by *position=* [left, bottom, width height] in normalized (0, 1) units. Default is [0.13, 0.11, 0.775, 0.815]. :param outerposition: (*list*) Optional, axes size and location, including labels and margin. :returns: The axes. """ if len(args) > 0: position = args[0] else: position = kwargs.pop('position', None) outerposition = kwargs.pop('outerposition', None) axestype = kwargs.pop('axestype', 'cartesian') polar = kwargs.pop('polar', False) if polar: axestype = 'polar' if axestype == 'polar': ax = PolarAxes() elif axestype == 'map': ax = MapAxes() elif axestype == '3d': ax = Axes3D() else: ax = Axes() if position is None: position = [0.13, 0.11, 0.775, 0.815] ax.active_outerposition(True) else: ax.active_outerposition(False) ax.set_position(position) if not outerposition is None: ax.set_outerposition(outerposition) ax.active_outerposition(True) return ax
def subplot(self, nrows, ncols, plot_number, **kwargs): """ Returen a subplot axes positioned by the given grid definition. :param nrows, nrows: (*int*) Whree *nrows* and *ncols* are used to notionally spli the figure into ``nrows * ncols`` sub-axes. :param plot_number: (*int) Is used to identify the particular subplot that this function is to create within the notional gird. It starts at 1, increments across rows first and has a maximum of ``nrows * ncols`` . :returns: Current axes specified by ``plot_number`` . """ chart = self.getChart() chart.setRowNum(nrows) chart.setColumnNum(ncols) polar = kwargs.pop('polar', False) isnew = True if isnew: polar = kwargs.pop('polar', False) if polar: ax = PolarAxes() else: ax = Axes() ax.axes.isSubPlot = True else: chart.setCurrentPlot(plot_number - 1) position = kwargs.pop('position', None) if position is None: if isnew: if isinstance(plot_number, (list, tuple)): i = 0 for pnum in plot_number: pnum -= 1 rowidx = pnum / ncols colidx = pnum % ncols width = 1. / ncols height = 1. / nrows x = width * colidx y = 1. - height * (rowidx + 1) if i == 0: minx = x miny = y maxx = x + width maxy = y + height else: minx = min(x, minx) miny = min(y, miny) maxx = max(x + width, maxx) maxy = max(y + height, maxy) i += 1 x = minx y = miny width = maxx - minx height = maxy - miny else: plot_number -= 1 rowidx = plot_number / ncols colidx = plot_number % ncols width = 1. / ncols height = 1. / nrows x = width * colidx y = 1. - height * (rowidx + 1) ax.set_position([x, y, width, height]) ax.set_outerposition([x, y, width, height]) ax.active_outerposition(True) else: ax.set_position(position) ax.active_outerposition(False) outerposition = kwargs.pop('outerposition', None) if not outerposition is None: ax.set_outerposition(outerposition) ax.active_outerposition(True) if isinstance(ax, MapAxes): self.__set_axesm(ax, **kwargs) else: self.__set_axes(ax, **kwargs) if isnew: chart.addPlot(ax.axes) chart.setCurrentPlot(chart.getPlots().size() - 1) return ax