import autolens as al import autolens.plot as aplt from test_autolens.simulators.imaging import instrument_util import numpy as np imaging = instrument_util.load_test_imaging( dataset_name="light_sersic__source_sersic", instrument="vro") array = imaging.image plotter = aplt.Plotter( figure=aplt.Figure(figsize=(10, 10)), cmap=aplt.ColorMap(cmap="gray", norm="symmetric_log", norm_min=-0.13, norm_max=20, linthresh=0.02), grid_scatterer=aplt.GridScatterer(marker="+", colors="cyan", size=450), ) grid = al.GridIrregular(grid=[[1.0, 1.0], [2.0, 2.0], [3.0, 3.0]]) print(grid) vector_field = al.VectorFieldIrregular(vectors=[(1.0, 2.0), (2.0, 1.0)], grid=[(-1.0, 0.0), (-2.0, 0.0)]) aplt.Array( array=array.in_2d, grid=grid, positions=al.GridIrregularGrouped([(0.0, 1.0), (0.0, 2.0)]),
""" __Visualization Customization__ The benefit of inspecting fits using the aggregator, rather than the files outputs to the hard-disk, is that we can customize the plots using the PyAutoLens mat_plot_2d. Below, we create a new function to apply as a generator to do this. However, we use a convenience method available in the PyAutoLens aggregator package to set up the fit. """ fit_agg = al.agg.FitImagingAgg(aggregator=agg) fit_imaging_gen = fit_agg.max_log_likelihood_gen() for fit in fit_imaging_gen: mat_plot_2d = aplt.MatPlot2D( figure=aplt.Figure(figsize=(12, 12)), title=aplt.Title(label="Custom Image", fontsize=24), yticks=aplt.YTicks(fontsize=24), xticks=aplt.XTicks(fontsize=24), cmap=aplt.Cmap(norm="log", vmax=1.0, vmin=1.0), colorbar_tickparams=aplt.ColorbarTickParams(labelsize=20), units=aplt.Units(in_kpc=True), ) fit_imaging_plotter = aplt.FitImagingPlotter(fit=fit, mat_plot_2d=mat_plot_2d) fit_imaging_plotter.figures_2d(normalized_residual_map=True) """ Making this plot for a paper? You can output it to hard disk. """ fit_agg = al.agg.FitImagingAgg(aggregator=agg)
""" imaging_plotter = aplt.ImagingPlotter(imaging=imaging) imaging_plotter.figures_2d(image=True) """ __Plot Customization__ Does the figure display correctly on your computer screen? If not, you can customize a number of matplotlib setup options using a `MatPlot2D` object in **PyAutoLens**, which wraps the `matplotlib` methods used to display the image. (For example, the `Figure` class wraps the `matplotlib` method `plt.figure(), whereas the `Yticks` class wraps `plt.yticks`). """ mat_plot_2d = aplt.MatPlot2D( figure=aplt.Figure(figsize=(7, 7)), yticks=aplt.YTicks(fontsize=8), xticks=aplt.XTicks(fontsize=8), title=aplt.Title(fontsize=12), ylabel=aplt.YLabel(fontsize=6), xlabel=aplt.XLabel(fontsize=6), ) imaging_plotter = aplt.ImagingPlotter(imaging=imaging, mat_plot_2d=mat_plot_2d) imaging_plotter.figures_2d(image=True) """ Many matplotlib options can be customized, but for now we're only concerned with making sure figures display clear in your Jupyter Notebooks. Nevertheless, a comprehensive API reference guide of all `matplotlib` wrappers and methods can be found in the `autolens_workspace/plot` package. You should check this out once you are more familiar with **PyAutoLens**.