Source code for pynbody.plot.metals

"""

metals
======

"""


import numpy as np
from ..analysis import profile
from .generic import hist2d, gauss_kde


[docs]def mdf(sim, filename=None, clear=True, range=[-5, 0.3], axes=False, **kwargs): ''' Metallicity Distribution Function Plots a metallicity distribution function to the best of matplotlib's abilities. Unfortunately, the "normed" keyword is buggy and does not return a PDF. The "density" keyword should, but it not yet supported in many versions of numpy. **Usage:** >>> import pynbody.plot as pp >>> pp.mdf(s,linestyle='dashed',color='k') ''' nbins = 100 if axes: plt = axes else: import matplotlib.pyplot as plt if clear: plt.clf() plt.xlabel('[Fe / H]') plt.ylabel('PDF') metpdf, bins = np.histogram(sim['feh'], weights=sim['mass'], bins=nbins, normed=True, range=range, **kwargs) # density=True, midpoints = 0.5 * (bins[:-1] + bins[1:]) plt.plot(midpoints, metpdf) if (filename): print("Saving " + filename) plt.savefig(filename)
[docs]def ofefeh(sim, fxn=gauss_kde, filename=None, **kwargs): ''' Use :func:`~pynbody.plot.generic.hist2d` to make a [O/Fe] vs. [Fe/H] plot **Input:** *sim*: snapshot to pull data from **Optional Keywords:** *fxn*: a function with the same signature as functions :func:`~pynbody.plot.generic.hist2d` and :func:`~pynbody.plot.generic.gauss_kde` in :mod:`pynbody.plot.generic` default: :func:`pynbody.plot.generic.hist2d` see :func:`~pynbody.plot.generic.make_contour_plot` for other plot-related keywords. ''' if 'subplot' in kwargs: fxn(sim['feh'], sim['ofe'], filename=filename, **kwargs) else: fxn(sim['feh'], sim['ofe'], filename=filename, xlabel="[Fe/H]", ylabel="[O/Fe]", **kwargs)