Plotting
The wcc_etc.plotting module provides ready-made diagnostic plots in both
matplotlib and bokeh, plus a shared house style. Every plotting
function comes in a *_mpl and a *_bokeh variant.
The house style
Apply the shared theme once per session/notebook:
import wcc_etc
wcc_etc.set_wcc_style() # global matplotlib rcParams
wcc_etc.WCC_STYLE # the underlying rcParams dict
The style uses STIX math/text fonts, 150 dpi, inward ticks, and faint gridlines on 1-D plots (image plots turn the grid off).
The four plots
Function pair |
What it shows |
|---|---|
|
A single image with equal x/y scale, a |
|
A three-panel row: PSF+Noise / PSF (no noise) / saturation mask, on a shared color scale. |
|
The azimuthally-averaged radial profile with a half-width marker. |
|
The encircled-energy curve (normalized to 1) with an optional
|
Two ways to call them
Each function accepts either a SimulatedImage as the first
positional argument, or raw arrays via keywords
(image_e=, image_clean=, saturation_mask=, pixel_scale_mas=):
from wcc_etc import plot_image_mpl, plot_radial_mpl
# From a SimulatedImage
plot_image_mpl(img, show_saturation=True)
# From raw arrays
plot_radial_mpl(image_e=arr, pixel_scale_mas=18.0, units="mas")
Convenience methods on SimulatedImage
The image object dispatches to the functions above, with a backend= switch:
img.plot_image(backend="mpl", show_saturation=True)
img.plot_image_row() # the 3-panel row
img.plot_radial(units="mas")
img.plot_encircled_energy(units="mas", ee_target=0.8)
Return values and embedding
The matplotlib variants return
(fig, ax)(plus(x, y)data for the 1-D plots), so you can pass an existingax=and compose figures.The bokeh variants take
return_="obj" | "html" | "components": use"obj"forbokeh.io.show()in a notebook, or"components"to get(script, div)for embedding in the Flask web portal.
# matplotlib: overplot two profiles on one axis
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
plot_radial_mpl(img_a, ax=ax)
plot_radial_mpl(img_b, ax=ax)
# bokeh: components for a web template
script, div = img.plot_image(backend="bokeh", return_="components")