def test_different_parameters(): np.random.seed(3) params_x = ['x0', 'x1', 'x2', 'x3', 'x4'] params_y = ['x0', 'x1', 'x2'] fig, axes = make_1d_axes(params_x) ns = NestedSamples(root='./tests/example_data/pc') ns.plot_1d(axes) fig, axes = make_2d_axes(params_y) ns.plot_2d(axes) fig, axes = make_2d_axes(params_x) ns.plot_2d(axes) fig, axes = make_2d_axes([params_x, params_y]) ns.plot_2d(axes) plt.close('all')
def test_masking(): pc = NestedSamples(root="./tests/example_data/pc") mask = pc['x0'] > 0 plot_types = ['kde', 'hist'] if 'fastkde' in sys.modules: plot_types += ['fastkde'] for ptype in plot_types: fig, axes = make_1d_axes(['x0', 'x1', 'x2']) pc[mask].plot_1d(axes=axes, plot_type=ptype) for ptype in plot_types + ['scatter']: fig, axes = make_2d_axes(['x0', 'x1', 'x2'], upper=False) pc[mask].plot_2d(axes=axes, types=dict(lower=ptype, diagonal='hist'))
def test_plot_2d_colours(): np.random.seed(3) gd = MCMCSamples(root="./tests/example_data/gd") gd.drop(columns='x3', inplace=True) pc = NestedSamples(root="./tests/example_data/pc") pc.drop(columns='x4', inplace=True) mn = NestedSamples(root="./tests/example_data/mn") mn.drop(columns='x2', inplace=True) plot_types = ['kde', 'hist'] if 'fastkde' in sys.modules: plot_types += ['fastkde'] for types in plot_types: fig = plt.figure() fig, axes = make_2d_axes(['x0', 'x1', 'x2', 'x3', 'x4'], fig=fig) types = {'diagonal': types, 'lower': types, 'upper': 'scatter'} gd.plot_2d(axes, types=types, label="gd") pc.plot_2d(axes, types=types, label="pc") mn.plot_2d(axes, types=types, label="mn") gd_colors = [] pc_colors = [] mn_colors = [] for y, rows in axes.iterrows(): for x, ax in rows.iteritems(): handles, labels = ax.get_legend_handles_labels() for handle, label in zip(handles, labels): if isinstance(handle, Rectangle): color = to_hex(handle.get_facecolor()) else: color = handle.get_color() if label == 'gd': gd_colors.append(color) elif label == 'pc': pc_colors.append(color) elif label == 'mn': mn_colors.append(color) assert(len(set(gd_colors)) == 1) assert(len(set(mn_colors)) == 1) assert(len(set(pc_colors)) == 1) plt.close("all")
def test_plot_2d_legend(): np.random.seed(3) ns = NestedSamples(root='./tests/example_data/pc') mc = MCMCSamples(root='./tests/example_data/gd') params = ['x0', 'x1', 'x2', 'x3'] # Test label kwarg for kde fig, axes = make_2d_axes(params, upper=False) ns.plot_2d(axes, label='l1', types=dict(diagonal='kde', lower='kde')) mc.plot_2d(axes, label='l2', types=dict(diagonal='kde', lower='kde')) for y, row in axes.iterrows(): for x, ax in row.iteritems(): if ax is not None: handles, labels = ax.get_legend_handles_labels() assert(labels == ['l1', 'l2']) if x == y: assert(all([isinstance(h, Line2D) for h in handles])) else: assert(all([isinstance(h, Rectangle) for h in handles])) plt.close('all') # Test label kwarg for hist and scatter fig, axes = make_2d_axes(params, lower=False) ns.plot_2d(axes, label='l1', types=dict(diagonal='hist', upper='scatter')) mc.plot_2d(axes, label='l2', types=dict(diagonal='hist', upper='scatter')) for y, row in axes.iterrows(): for x, ax in row.iteritems(): if ax is not None: handles, labels = ax.get_legend_handles_labels() assert(labels == ['l1', 'l2']) if x == y: assert(all([isinstance(h, Rectangle) for h in handles])) else: assert(all([isinstance(h, Line2D) for h in handles])) plt.close('all') # test default labelling fig, axes = make_2d_axes(params, upper=False) ns.plot_2d(axes) mc.plot_2d(axes) for y, row in axes.iterrows(): for x, ax in row.iteritems(): if ax is not None: handles, labels = ax.get_legend_handles_labels() assert(labels == ['pc', 'gd']) plt.close('all') # Test label kwarg to constructors ns = NestedSamples(root='./tests/example_data/pc', label='l1') mc = MCMCSamples(root='./tests/example_data/gd', label='l2') params = ['x0', 'x1', 'x2', 'x3'] fig, axes = make_2d_axes(params, upper=False) ns.plot_2d(axes) mc.plot_2d(axes) for y, row in axes.iterrows(): for x, ax in row.iteritems(): if ax is not None: handles, labels = ax.get_legend_handles_labels() assert(labels == ['l1', 'l2']) plt.close('all')
mcmc.plot_2d([['omegabh2', 'omegach2', 'H0'], ['logA', 'ns']]) #| Rectangle plots are pretty flexible with what they can do: mcmc.plot_2d([['omegabh2', 'omegach2', 'H0'], ['H0', 'omegach2']]) #| ## Changing the appearance #| #| Anesthetic tries to follow matplotlib conventions as much as possible, so #| most changes to the appearance should be relatively straight forward. #| Here are some examples: #| #| * figure size: fig = plt.figure(figsize=(5, 5)) fig, axes = make_2d_axes(['omegabh2', 'omegach2', 'H0'], fig=fig, tex=mcmc.tex) mcmc.plot_2d(axes) #| * legends: fig, axes = make_2d_axes(['omegabh2', 'omegach2', 'H0'], tex=mcmc.tex) mcmc.plot_2d(axes, label='Posterior') axes.iloc[-1, 0].legend(bbox_to_anchor=(len(axes), len(axes)), loc='upper left') #| * unfilled contours & modifying individual axes: fig, axes = make_2d_axes(['omegabh2', 'omegach2', 'H0'], tex=mcmc.tex) mcmc.plot_2d(axes.iloc[0:1, :], types=dict(upper='kde', lower='kde', diagonal='kde'), fc=None)