def plot_1d(self, axes, *args, **kwargs): """Create an array of 1D plots. Parameters ---------- axes: plotting axes Can be: - list(str) or str - pandas.Series(matplotlib.axes.Axes) If a pandas.Series is provided as an existing set of axes, then this is used for creating the plot. Otherwise a new set of axes are created using the list or lists of strings. Returns ------- fig: matplotlib.figure.Figure New or original (if supplied) figure object axes: pandas.Series of matplotlib.axes.Axes Pandas array of axes objects """ if not isinstance(axes, pandas.Series): fig, axes = make_1d_axes(axes, tex=self.tex) else: fig = axes.bfill().to_numpy().flatten()[0].figure for x, ax in axes.iteritems(): self.plot(ax, x, *args, **kwargs) return fig, axes
def test_make_1d_axes(): paramnames = ['A', 'B', 'C', 'D', 'E'] tex = {'A': 'tA', 'B': 'tB', 'C': 'tC', 'D': 'tD', 'E': 'tE'} # Check no optional arguments fig, axes = make_1d_axes(paramnames) assert(isinstance(fig, Figure)) assert(isinstance(axes, Series)) assert_array_equal(axes.index, paramnames) for p, ax in axes.iteritems(): assert(ax.get_xlabel() == p) # Check tex argument fig, axes = make_1d_axes(paramnames, tex=tex) for t in tex: assert(axes[t].get_xlabel() != t) assert(axes[t].get_xlabel() == tex[t]) # Check fig argument fig0 = plt.figure() fig0.suptitle('hi there') fig, axes = make_1d_axes(paramnames) assert(fig is not fig0) fig, axes = make_1d_axes(paramnames, fig=fig0) assert(fig is fig0) # Check ncols argument fig, axes = make_1d_axes(paramnames, ncols=2) nrows, ncols = axes[0].get_subplotspec().get_gridspec().get_geometry() assert(ncols == 2) # Check gridspec argument grid = gs.GridSpec(2, 2, width_ratios=[3, 1], height_ratios=[3, 1]) g00 = grid[0, 0] fig, axes = make_1d_axes(paramnames, subplot_spec=g00) assert(g00 is axes[0].get_subplotspec().get_topmost_subplotspec()) # Check unexpected kwargs with pytest.raises(TypeError): make_1d_axes(paramnames, foo='bar') plt.close("all")