Source code for beorn.plotting.star_formation_rate

"""Plotting routines for star-formation rate related quantities."""
import matplotlib.pyplot as plt
import logging

from ..structs import Parameters
from ..astro import f_star_Halo, f_esc

logger = logging.getLogger(__name__)


[docs] def draw_star_formation_rate(ax: plt.Axes, parameters: Parameters, label=None, color=None): """Draw the star-formation efficiency as a function of halo mass. The function queries the halo-mass grid from ``parameters`` and computes the star-formation fraction ``f_*`` using :func:`beorn.astro.f_star_Halo`, restricting the plotted range to the configured source mass limits. Args: ax (matplotlib.axes.Axes): Axis to draw the curve onto. parameters (Parameters): Simulation parameters used to obtain the halo mass grid and source mass limits. label (str, optional): Optional legend label. color (str|tuple, optional): Color for the plotted line. """ mass_range = [parameters.source.halo_mass_min, parameters.source.halo_mass_max] # restrict the simulated mass range bins = parameters.solver.halo_mass_bins keep = (bins > mass_range[0]) & (bins <= mass_range[1]) keep_bins = bins[keep] fstar = f_star_Halo(parameters, keep_bins) ax.loglog(keep_bins, fstar, label=label, color=color) # ax.set_ylim(0.1, 1.1) ax.set_ylabel(r'$f_*$ = $\dot{M}_{*}/\dot{M}_{\mathrm{h}}$') ax.set_xlabel(r'M$_*$ $[M_{\odot}]$')
[docs] def draw_f_esc(ax: plt.Axes, parameters: Parameters, label=None, color=None): """Draw the escape fraction as a function of halo mass. The escape fraction ``f_esc`` is computed by :func:`beorn.astro.f_esc` on the simulation halo-mass grid and the result is plotted over the configured source mass range. Args: ax (matplotlib.axes.Axes): Axis to draw the curve onto. parameters (Parameters): Simulation parameters used to obtain the halo mass grid and source mass limits. label (str, optional): Optional legend label. color (str|tuple, optional): Color for the plotted line. """ mass_range = [parameters.source.halo_mass_min, parameters.source.halo_mass_max] # restrict the simulated mass range bins = parameters.solver.halo_mass_bins keep = (bins >= mass_range[0]) & (bins <= mass_range[1]) keep_bins = bins[keep] fesc = f_esc(parameters, keep_bins) ax.loglog(keep_bins, fesc, label=label, color=color) # ax.set_ylim(0.1, 1.1) ax.set_ylabel(r'$f_{esc}(M_h)$') ax.set_xlabel(r'M$_h$ [$M_{\odot}$]')