Plotting¶
gas¶
Functions for plotting gas quantities
-
pynbody.plot.gas.
rho_T
(sim, rho_units=None, rho_range=None, t_range=None, two_phase='split', **kwargs)[source]¶ Plot Temperature vs. Density for the gas particles in the snapshot.
Optional keywords:
rho_units: specify the density units (default is the same units as the current ‘rho’ array)
- t_range: list, array, or tuple
size(t_range)
must be 2. Specifies the temperature range.- rho_range: tuple
size(rho_range)
must be 2. Specifies the density range.
two_phase: if two-phase particles are detected, either plot each phase separately (‘split’), or merge them (‘merge’)
See
hist2d()
for other plotting keyword options
generic¶
Flexible and general plotting functions
-
pynbody.plot.generic.
hist2d
(xo, yo, weights=None, mass=None, gridsize=100, 100, nbins=None, make_plot=True, **kwargs)[source]¶ Plot 2D histogram for arbitrary arrays that get passed in.
Input:
x: array
y: array
Optional keywords:
- x_range: list, array, or tuple
size(x_range) must be 2. Specifies the X range.
- y_range: tuple
size(y_range) must be 2. Specifies the Y range.
- gridsize: (int, int) (default (100,100))
number of bins to use for the 2D histogram
- nbins: int
number of bins for the histogram - if specified, gridsize is set to (nbins,nbins)
- nlevels: int
number of levels to use for the contours
- logscale: boolean
whether to use log or linear spaced contours
- weights: numpy array of same length as x and y
if weights is passed, color corresponds to the mean value of weights in each cell
- mass: numpy array of masses same length as x andy
must also have weights passed in. If you just want to weight by mass, pass the masses to weights
- colorbar: boolean
draw a colorbar
- scalemin: float
minimum value to use for the color scale
- scalemax: float
maximum value to use for the color scale
-
pynbody.plot.generic.
gauss_kde
(xo, yo, weights=None, mass=None, gridsize=100, 100, nbins=None, make_plot=True, nmin=None, nmax=None, **kwargs)[source]¶ Plot 2D gaussian kernel density estimate (KDE) given values at points (x, y).
Behavior changes depending on which keywords are passed:
If a weights array is supplied, produce a weighted KDE.
If a mass array is supplied, a mass density is computed.
If both weights and mass are supplied, a mass-averaged KDE of the weights is computed.
By default, norm=False is passed to
fast_kde()
meaning that the result returned is not normalized such that the integral over the area equals one.- Since this function produces a density estimate, the units of the
output grid are different than for the output of
hist2d()
. To get to the same units, you must multiply by the size of the cells.Input:
xo: array
yo: array
Optional keywords:
- mass: numpy array of same length as x and y
particle masses to be used for weighting
- weights: numpy array of same length as x and y
if weights is passed, color corresponds to the mean value of weights in each cell
- nmin: float (default None)
if weights and mass are both specified, the mass-weighted contours are only drawn where the mass exceeds nmin.
- gridsize: (int, int) (default: 100,100)
size of grid for computing the density estimate
- nbins: int
number of bins for the histogram - if specified, gridsize is set to (nbins,nbins)
- make_plot: boolean (default: True)
whether or not to produce a plot
Keywords passed to
fast_kde()
:- norm: boolean (default: False)
If False, the output is only corrected for the kernel. If True, the result is normalized such that the integral over the area yields 1.
- nocorrelation: (default: False) If True, the correlation
between the x and y coords will be ignored when preforming the KDE.
Keywords passed to
make_contour_plot()
:- x_range: list, array, or tuple
size(x_range) must be 2. Specifies the X range.
- y_range: tuple
size(y_range) must be 2. Specifies the Y range.
- nlevels: int
number of levels to use for the contours
- logscale: boolean
whether to use log or linear spaced contours
- colorbar: boolean
draw a colorbar
- scalemin: float
minimum value to use for the color scale
- scalemax: float
maximum value to use for the color scale
-
pynbody.plot.generic.
make_contour_plot
(arr, xs, ys, x_range=None, y_range=None, nlevels=20, logscale=True, xlogrange=False, ylogrange=False, subplot=False, colorbar=False, ret_im=False, cmap=None, clear=True, legend=False, scalemin=None, levels=None, scalemax=None, filename=None, **kwargs)[source]¶ Plot a contour plot of grid arr corresponding to bin centers specified by xs and ys. Labels the axes and colobar with proper units taken from x
Called by
hist2d()
andgauss_density()
.Input:
arr: 2D array to plot
xs: x-coordinates of bins
ys: y-coordinates of bins
Optional Keywords:
- x_range: list, array, or tuple (default = None)
size(x_range) must be 2. Specifies the X range.
- y_range: tuple (default = None)
size(y_range) must be 2. Specifies the Y range.
- xlogrange: boolean (default = False)
whether the x-axis should have a log scale
- ylogrange: boolean (default = False)
whether the y-axis should have a log scale
- nlevels: int (default = 20)
number of levels to use for the contours
- logscale: boolean (default = True)
whether to use log or linear spaced contours
- colorbar: boolean (default = False)
draw a colorbar
- scalemin: float (default = arr.min())
minimum value to use for the color scale
- scalemax: float (default = arr.max())
maximum value to use for the color scale
-
pynbody.plot.generic.
fourier_map
(sim, nbins=100, nmin=1000, nphi=100, mmin=1, mmax=7, rmax=10, levels=[0.01, 0.05, 0.1, 0.2], subplot=None, ret=False, **kwargs)[source]¶ Plot an overdensity map generated from a Fourier expansion of the particle distribution. A
Profile()
is made and passed toinv_fourier()
to obtain an overdensity map. The map is plotted using the usual matplotlib.contour.Input:
sim : a
SimSnap()
objectOptional Keywords:
nbins (100) : number of radial bins to use for the profile
nmin (1000) : minimum number of particles required per bin
nphi (100) : number of azimuthal bins to use for the map
mmin (1) : lowest multiplicity Fourier component
mmax (7) : highest multiplicity Fourier component
rmax (10) : maximum radius to use when generating the profile
levels [0.01,0.05,0.1,0.2] : tuple of levels for plotting contours
subplot (None) : Axes object on which to plot the contours
-
pynbody.plot.generic.
prob_plot
(x, y, weight, nbins=100, 100, extent=None, axes=None, **kwargs)[source]¶ Make a plot of the probability of y given x, i.e. p(y|x). The values are normalized such that the integral along each column is one.
Input:
x: primary binning axis
y: secondary binning axis
weight: weights array
nbins: tuple of length 2 specifying the number of bins in each direction
- extent: tuple of length 4 speciphysical extent of the axes
(xmin,xmax,ymin,ymax)
Optional Keywords:
all optional keywords are passed on to the imshow() command
metals¶
-
pynbody.plot.metals.
mdf
(sim, filename=None, clear=True, range=[- 5, 0.3], axes=False, **kwargs)[source]¶ 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')
-
pynbody.plot.metals.
ofefeh
(sim, fxn=<function gauss_kde>, filename=None, **kwargs)[source]¶ Use
hist2d()
to make a [O/Fe] vs. [Fe/H] plotInput:
sim: snapshot to pull data from
Optional Keywords:
- fxn: a function with the same signature as functions
hist2d()
andgauss_kde()
inpynbody.plot.generic
default:pynbody.plot.generic.hist2d()
see
make_contour_plot()
for other plot-related keywords.
profile¶
-
pynbody.plot.profile.
rotation_curve
(sim, center=True, r_units='kpc', v_units='km s^-1', disk_height='100 pc', nbins=50, bin_spacing='equaln', clear=True, quick=False, filename=None, min=False, max=False, yrange=False, legend=False, parts=False, axes=False, **kwargs)[source]¶ Centre on potential minimum, align so that the disk is in the x-y plane, then use the potential in that plane to generate and plot a rotation curve.
needs documentation/description of the keyword arguments
-
pynbody.plot.profile.
fourier_profile
(sim, center=True, disk_height='2 kpc', nbins=50, pretime='2 Gyr', r_units='kpc', bin_spacing='equaln', clear=True, min=False, max=False, filename=None, **kwargs)[source]¶ Centre on potential minimum, align so that the disk is in the x-y plane, then plot the amplitude of the 2nd fourier mode as a function of radius.
needs description of the keyword arguments
-
pynbody.plot.profile.
density_profile
(sim, linestyle=False, center=True, clear=True, fit=False, in_units=None, filename=None, fit_factor=0.02, axes=False, **kwargs)[source]¶ 3d density profile
Options:
filename (None): name of file to which to save output
Usage:
>>> import pynbody.plot as pp >>> h = s.halos() >>> pp.density_profile(h[1],linestyle='dashed',color='k')
sph¶
routines for plotting smoothed quantities
-
pynbody.plot.sph.
sideon_image
(sim, *args, **kwargs)[source]¶ Rotate the simulation so that the disc of the passed halo is side-on, then make an SPH image by passing the parameters into the function image
For a description of keyword arguments see
image()
.
-
pynbody.plot.sph.
faceon_image
(sim, *args, **kwargs)[source]¶ Rotate the simulation so that the disc of the passed halo is face-on, then make an SPH image by passing the parameters into the function image
For a description of keyword arguments see
image()
.
-
pynbody.plot.sph.
velocity_image
(sim, width='10 kpc', vector_color='black', edgecolor='black', quiverkey_bg_color=None, vector_resolution=40, scale=None, mode='quiver', key_x=0.3, key_y=0.9, key_color='white', key_length='100 km s**-1', quiverkey=True, density=1.0, vector_qty='vel', **kwargs)[source]¶ Make an SPH image of the given simulation with velocity vectors overlaid on top.
For a description of additional keyword arguments see
image()
, or see the tutorial.Keyword arguments:
vector_color (black): The color for the velocity vectors
- edgecolor (black): edge color used for the lines - using a color
other than black for the vector_color and a black edgecolor can result in poor readability in pdfs
vector_resolution (40): How many vectors in each dimension (default is 40x40)
quiverkey_bg_color (none): The color for the legend (scale) background
scale (None): The length of a vector that would result in a displayed length of the figure width/height.
mode (‘quiver’): make a ‘quiver’ or ‘stream’ plot
key_x (0.3): Display x (width) position for the vector key (quiver mode only)
key_y (0.9): Display y (height) position for the vector key (quiver mode only)
key_color (white): Color for the vector key (quiver mode only)
key_length (100 km/s): Velocity to use for the vector key (quiver mode only)
density (1.0): Density of stream lines (stream mode only)
quiverkey (True): Whether or not to inset the key
vector_qty (‘vel’): The name of the vector field to plot
-
pynbody.plot.sph.
volume
(sim, qty='rho', width=None, resolution=200, color=1.0, 1.0, 1.0, vmin=None, vmax=None, dynamic_range=4.0, log=True, create_figure=True)[source]¶ Create a volume rendering of the given simulation using mayavi.
Keyword arguments:
qty (rho): The name of the array to interpolate
width (None): The width of the cube to generate, centered on the origin
resolution (200): The number of elements along each side of the cube
- color (white): The color of the volume rendering. The value of each voxel
is used to set the opacity.
vmin (None): The value for zero opacity (calculated using dynamic_range if None)
- vmax (None): The value for full opacity (calculated from the maximum
value in the region if None)
dynamic_range: The dynamic range to use if vmin and vmax are not specified
log (True): log-scale the image before passing to mayavi
create_figure (True): create a new mayavi figure before rendering
-
pynbody.plot.sph.
contour
(*args, **kwargs)[source]¶ Make an SPH image of the given simulation and render it as contours. nlevels and levels are passed to pyplot’s contour command.
Other arguments are as for image.
-
pynbody.plot.sph.
image
(sim, qty='rho', width='10 kpc', resolution=500, units=None, log=True, vmin=None, vmax=None, av_z=False, filename=None, z_camera=None, clear=True, cmap=None, title=None, qtytitle=None, show_cbar=True, subplot=False, noplot=False, ret_im=False, fill_nan=True, fill_val=0.0, linthresh=None, **kwargs)[source]¶ Make an SPH image of the given simulation.
Keyword arguments:
qty (rho): The name of the array to interpolate
- width (10 kpc): The overall width and height of the plot. If
width
is a float or an int, then it is assumed to be in units ofsim['pos']
. It can also be passed in as a string indicating the units, i.e. ‘10 kpc’, in which case it is converted to units ofsim['pos']
.
resolution (500): The number of pixels wide and tall
units (None): The units of the output
- av_z (False): If True, the requested quantity is averaged down
the line of sight (default False: image is generated in the thin plane z=0, unless output units imply an integral down the line of sight). If a string, the requested quantity is averaged down the line of sight weighted by the av_z array (e.g. use ‘rho’ for density-weighted quantity; the default results when av_z=True are volume-weighted).
- z_camera (None): If set, a perspective image is rendered. See
pynbody.sph.image()
for more details.
filename (None): if set, the image will be saved in a file
clear (True): whether to call clf() on the axes first
cmap (None): user-supplied colormap instance
title (None): plot title
qtytitle (None): colorbar quantity title
show_cbar (True): whether to plot the colorbar
subplot (False): the user can supply a AxesSubPlot instance on which the image will be shown
noplot (False): do not display the image, just return the image array
ret_im (False): return the image instance returned by imshow
num_threads (None) : if set, specify the number of threads for the multi-threaded routines; otherwise the pynbody.config default is used
fill_nan (True): if any of the image values are NaN, replace with fill_val
fill_val (0.0): the fill value to use when replacing NaNs
- linthresh (None): if the image has negative and positive values
and a log scaling is requested, the part between -linthresh and linthresh is shown on a linear scale to avoid divergence at 0
stars¶
-
pynbody.plot.stars.
render
(sim, filename=None, r_band='i', g_band='v', b_band='u', r_scale=0.5, g_scale=1.0, b_scale=1.0, dynamic_range=2.0, mag_range=None, width=50, resolution=500, starsize=None, plot=True, axes=None, ret_im=False, clear=True, ret_range=False, with_dust=False, z_range=50.0)[source]¶ Make a 3-color image of stars.
The colors are based on magnitudes found using stellar Marigo stellar population code. If with_dust is True, a simple dust screening is applied.
Returns: If ret_im=True, an NxNx3 array representing an RGB image
Optional keyword arguments:
- filename: string (default: None)
Filename to be written to (if a filename is specified)
- r_band: string (default: ‘i’)
Determines which Johnston filter will go into the image red channel
- g_band: string (default: ‘v’)
Determines which Johnston filter will go into the image green channel
- b_band: string (default: ‘b’)
Determines which Johnston filter will go into the image blue channel
- r_scale: float (default: 0.5)
The scaling of the red channel before channels are combined
- g_scale: float (default: 1.0)
The scaling of the green channel before channels are combined
- b_scale: float (default: 1.0)
The scaling of the blue channel before channels are combined
- width: float in kpc (default:50)
Sets the size of the image field in kpc
- resolution: integer (default: 500)
Sets the number of pixels on the side of the image
- starsize: float in kpc (default: None)
If not None, sets the maximum size of stars in the image
- ret_im: bool (default: False)
if True, the NxNx3 image array is returned
- ret_range: bool (default: False)
if True, the range of the image in mag arcsec^-2 is returned.
- plot: bool (default: True)
if True, the image is plotted
- axes: matplotlib axes object (deault: None)
if not None, the axes object to plot to
- dynamic_range: float (default: 2.0)
The number of dex in luminosity over which the image brightness ranges
- mag_range: float, float (default: None)
If provided, the brightest and faintest surface brightnesses in the range, in mag arcsec^-2. Takes precedence over dynamic_range.
- with_dust: bool, (default: False)
If True, the image is rendered with a simple dust screening model based on Calzetti’s law.
- z_range: float, (default: 50.0)
If with_dust is True this parameter specifies the z range over which the column density will be calculated. The default value is 50 kpc.
-
pynbody.plot.stars.
mollview
(map=None, fig=None, plot=False, filenme=None, rot=None, coord=None, unit='', xsize=800, title='Mollweide view', nest=False, min=None, max=None, flip='astro', remove_dip=False, remove_mono=False, gal_cut=0, format='%g', format2='%g', cbar=True, cmap=None, notext=False, norm=None, hold=False, margins=None, sub=None, return_projected_map=False)[source]¶ - Plot an healpix map (given as an array) in Mollweide projection.
Requires the healpy package.
This function is taken from the Healpy package and slightly modified.
- Parameters
- mapfloat, array-like or None
An array containing the map, supports masked maps, see the ma function. If None, will display a blank map, useful for overplotting.
- figfigure object or None, optional
The figure to use. Default: create a new figure
- plotbool (default: False)
if True the image is plotted
- filenamestring (default: None)
Filename to be written to (if a filename is specified)
- rotscalar or sequence, optional
Describe the rotation to apply. In the form (lon, lat, psi) (unit: degrees) : the point at longitude lon and latitude lat will be at the center. An additional rotation of angle psi around this direction is applied.
- coordsequence of character, optional
Either one of ‘G’, ‘E’ or ‘C’ to describe the coordinate system of the map, or a sequence of 2 of these to rotate the map from the first to the second coordinate system.
- unitstr, optional
A text describing the unit of the data. Default: ‘’
- xsizeint, optional
The size of the image. Default: 800
- titlestr, optional
The title of the plot. Default: ‘Mollweide view’
- nestbool, optional
If True, ordering scheme is NESTED. Default: False (RING)
- minfloat, optional
The minimum range value
- maxfloat, optional
The maximum range value
- flip{‘astro’, ‘geo’}, optional
Defines the convention of projection : ‘astro’ (default, east towards left, west towards right) or ‘geo’ (east towards right, west towards left)
- remove_dipbool, optional
If
True
, remove the dipole+monopole- remove_monobool, optional
If
True
, remove the monopole- gal_cutfloat, scalar, optional
Symmetric galactic cut for the dipole/monopole fit. Removes points in latitude range [-gal_cut, +gal_cut]
- formatstr, optional
The format of the scale label. Default: ‘%g’
- format2str, optional
Format of the pixel value under mouse. Default: ‘%g’
- cbarbool, optional
Display the colorbar. Default: True
- notextbool, optional
If True, no text is printed around the map
- norm{‘hist’, ‘log’, None}
Color normalization, hist= histogram equalized color mapping, log= logarithmic color mapping, default: None (linear color mapping)
- holdbool, optional
If True, replace the current Axes by a MollweideAxes. use this if you want to have multiple maps on the same figure. Default: False
- subint, scalar or sequence, optional
Use only a zone of the current figure (same syntax as subplot). Default: None
- marginsNone or sequence, optional
Either None, or a sequence (left,bottom,right,top) giving the margins on left,bottom,right and top of the axes. Values are relative to figure (0-1). Default: None
- return_projected_mapbool
if True returns the projected map in a 2d numpy array
- See Also
- ——–
- gnomview, cartview, orthview, azeqview
-
pynbody.plot.stars.
render_mollweide
(sim, filename=None, r_band='i', g_band='v', b_band='u', r_scale=0.5, g_scale=1.0, b_scale=1.0, dynamic_range=2.0, mag_range=None, width=25, nside=128, starsize=None, plot=True, axes=None, ret_im=False, clear=True, ret_range=False)[source]¶ Make a 3-color all-sky image of stars in a mollweide projection. Adapted from the function pynbody.plot.stars.render
The colors are based on magnitudes found using stellar Marigo stellar population code. However there is no radiative transfer to account for dust.
Returns: If ret_im=True, an NxNx3 array representing an RGB image
Optional keyword arguments:
- filename: string (default: None)
Filename to be written to (if a filename is specified)
- r_band: string (default: ‘i’)
Determines which Johnston filter will go into the image red channel
- g_band: string (default: ‘v’)
Determines which Johnston filter will go into the image green channel
- b_band: string (default: ‘b’)
Determines which Johnston filter will go into the image blue channel
- r_scale: float (default: 0.5)
The scaling of the red channel before channels are combined
- g_scale: float (default: 1.0)
The scaling of the green channel before channels are combined
- b_scale: float (default: 1.0)
The scaling of the blue channel before channels are combined
- width: float in kpc (default:50)
Sets the size of the image field in kpc
- starsize: float in kpc (default: None)
If not None, sets the maximum size of stars in the image
- ret_im: bool (default: False)
if True, the NxNx3 image array is returned
- ret_range: bool (default: False)
if True, the range of the image in mag arcsec^-2 is returned.
- plot: bool (default: True)
if True, the image is plotted
- axes: matplotlib axes object (deault: None)
if not None, the axes object to plot to
- dynamic_range: float (default: 2.0)
The number of dex in luminosity over which the image brightness ranges
- mag_range: float, float (default: None)
If provided, the brightest and faintest surface brightnesses in the range, in mag arcsec^-2. Takes precedence over dynamic_range.
-
pynbody.plot.stars.
sfh
(sim, filename=None, massform=True, clear=False, legend=False, subplot=False, trange=False, bins=100, **kwargs)[source]¶ star formation history
Optional keyword arguments:
- trange: list, array, or tuple
size(t_range) must be 2. Specifies the time range.
- bins: int
number of bins to use for the SFH
- massform: bool
decides whether to use original star mass (massform) or final star mass
- subplot: subplot object
where to plot SFH
- legend: boolean
whether to draw a legend or not
- clear: boolean
if False (default), plot on the current axes. Otherwise, clear the figure first.
By default, sfh will use the formation mass of the star. In tipsy, this will be taken from the starlog file. Set massform=False if you want the final (observed) star formation history
Usage:
>>> import pynbody.plot as pp >>> pp.sfh(s,linestyle='dashed',color='k')
-
pynbody.plot.stars.
schmidtlaw
(sim, center=True, filename=None, pretime='50 Myr', diskheight='3 kpc', rmax='20 kpc', compare=True, radial=True, clear=True, legend=True, bins=10, **kwargs)[source]¶ Schmidt Law
Plots star formation surface density vs. gas surface density including the observed relationships. Currently, only plots densities found in radial annuli.
Usage:
>>> import pynbody.plot as pp >>> pp.schmidtlaw(h[1])
Optional keyword arguments:
- center: bool
center and align the input simulation faceon.
- filename: string
Name of output file
pretime (default=’50 Myr’): age of stars to consider for SFR
- diskheight (default=’3 kpc’): height of gas and stars above
and below disk considered for SF and gas densities.
rmax (default=’20 kpc’): radius of disk considered
- compare (default=True): whether to include Kennicutt (1998) and
Bigiel+ (2008) for comparison
radial (default=True): should bins be annuli or a rectangular grid?
bins (default=10): How many radial bins should there be?
- legend: boolean
whether to draw a legend or not
-
pynbody.plot.stars.
oneschmidtlawpoint
(sim, center=True, pretime='50 Myr', diskheight='3 kpc', rmax='20 kpc', **kwargs)[source]¶ One Schmidt Law Point
Determines values for star formation surface density and gas surface density for the entire galaxy based on the half mass cold gas radius.
Usage: import pynbody.plot as pp pp.oneschmidtlawpoint(h[1])
pretime (default=’50 Myr’): age of stars to consider for SFR
- diskheight (default=’3 kpc’): height of gas and stars above
and below disk considered for SF and gas densities.
rmax (default=’20 kpc’): radius of disk considered
-
pynbody.plot.stars.
satlf
(sim, band='v', filename=None, MWcompare=True, Trentham=True, clear=True, legend=True, label='Simulation', **kwargs)[source]¶ satellite luminosity function
Options:
band (‘v’): which Johnson band to use. available filters: U, B, V, R, I, J, H, K
filename (None): name of file to which to save output
MWcompare (True): whether to plot comparison lines to MW
- Trentham (True): whether to plot comparison lines to Trentham +
Tully (2009) combined with Koposov et al (2007)
By default, satlf will use the formation mass of the star. In tipsy, this will be taken from the starlog file.
Usage:
>>> import pynbody.plot as pp >>> h = s.halos() >>> pp.satlf(h[1],linestyle='dashed',color='k')
-
pynbody.plot.stars.
sbprofile
(sim, band='v', diskheight='3 kpc', rmax='20 kpc', binning='equaln', center=True, clear=True, filename=None, axes=False, fit_exp=False, print_ylabel=True, fit_sersic=False, **kwargs)[source]¶ surface brightness profile
Usage:
>>> import pynbody.plot as pp >>> h = s.halos() >>> pp.sbprofile(h[1],exp_fit=3,linestyle='dashed',color='k')
Options:
- band (‘v’): which Johnson band to use. available filters: U, B,
V, R, I, J, H, K
*fit_exp*(False): Fits straight exponential line outside radius specified.
*fit_sersic*(False): Fits Sersic profile outside radius specified.
diskheight(‘3 kpc’) rmax(‘20 kpc’): Size of disk to be profiled
- binning(‘equaln’): How show bin sizes be determined? based on
pynbody.analysis.profile
center(True): Automatically align face on and center?
axes(False): In which axes (subplot) should it be plotted?
filename (None): name of file to which to save output
needs a description of all keywords
By default, sbprof will use the formation mass of the star. In tipsy, this will be taken from the starlog file.
-
pynbody.plot.stars.
behroozi
(xmasses, z, alpha=- 1.412, Kravtsov=False)[source]¶ Based on Behroozi+ (2013) return what stellar mass corresponds to the halo mass passed in.
Usage
>>> from pynbody.plot.stars import moster >>> xmasses = np.logspace(np.log10(min(totmasshalos)),1+np.log10(max(totmasshalos)),20) >>> ystarmasses, errors = moster(xmasses,halo_catalog._halos[1].properties['z']) >>> plt.fill_between(xmasses,np.array(ystarmasses)/np.array(errors), y2=np.array(ystarmasses)*np.array(errors), facecolor='#BBBBBB',color='#BBBBBB')
-
pynbody.plot.stars.
moster
(xmasses, z)[source]¶ Based on Moster+ (2013) return what stellar mass corresponds to the halo mass passed in.
Usage
>>> from pynbody.plot.stars import moster >>> xmasses = np.logspace(np.log10(min(totmasshalos)),1+np.log10(max(totmasshalos)),20) >>> ystarmasses, errors = moster(xmasses,halo_catalog._halos[1].properties['z']) >>> plt.fill_between(xmasses,np.array(ystarmasses)/np.array(errors), y2=np.array(ystarmasses)*np.array(errors), facecolor='#BBBBBB',color='#BBBBBB')
-
pynbody.plot.stars.
hudson
(xmasses, z)[source]¶ Based on Hudson+ (2014), returns what stellar mass corresponds to the halo mass passed in. This is the only SMHMR function that is not based on abundance matching, but instead uses date from CFHTLenS galaxy lensing data.
>>> from pynbody.plot.stars import hudson >>> xmasses = np.logspace(np.log10(min(totmasshalos)),1+np.log10(max(totmasshalos)),20) >>> ystarmasses, errors = hudson(xmasses,halo_catalog._halos[1].properties['z']) >>> plt.fill_between(xmasses,np.array(ystarmasses)/np.array(errors), y2=np.array(ystarmasses)*np.array(errors), facecolor='#BBBBBB',color='#BBBBBB')
-
pynbody.plot.stars.
subfindguo
(halo_catalog, clear=False, compare=True, baryfrac=False, filename=False, **kwargs)[source]¶ Stellar Mass vs. Halo Mass
Takes a halo catalogue and plots the member stellar masses as a function of halo mass.
Usage:
>>> import pynbody.plot as pp >>> h = s.halos() >>> pp.guo(h,marker='+',markerfacecolor='k')
Options:
- compare (True): Should comparison line be plotted?
If compare = ‘guo’, Guo+ (2010) plotted instead of Behroozi+ (2013)
baryfrac (False): Should line be drawn for cosmic baryon fraction?
filename (None): name of file to which to save output
-
pynbody.plot.stars.
guo
(halo_catalog, clear=False, compare=True, baryfrac=False, filename=False, **kwargs)[source]¶ Stellar Mass vs. Halo Mass
Takes a halo catalogue and plots the member stellar masses as a function of halo mass.
Usage:
>>> import pynbody.plot as pp >>> h = s.halos() >>> pp.guo(h,marker='+',markerfacecolor='k')
Options:
- compare (True): Should comparison line be plotted?
If compare = ‘guo’, Guo+ (2010) plotted instead of Behroozi+ (2013)
baryfrac (False): Should line be drawn for cosmic baryon fraction?
filename (None): name of file to which to save output
util¶
Utility functions for the plotting module
-
pynbody.plot.util.
fast_kde
(x, y, kern_nx=None, kern_ny=None, gridsize=100, 100, extents=None, nocorrelation=False, weights=None, norm=False, **kwargs)[source]¶ A faster gaussian kernel density estimate (KDE). Intended for computing the KDE on a regular grid (different use case than scipy’s original scipy.stats.kde.gaussian_kde()).
Author: Joe Kington License: MIT License <http://www.opensource.org/licenses/mit-license.php>
Performs a gaussian kernel density estimate over a regular grid using a convolution of the gaussian kernel with a 2D histogram of the data.
This function is typically several orders of magnitude faster than scipy.stats.kde.gaussian_kde for large (>1e7) numbers of points and produces an essentially identical result.
Input:
- x: array
The x-coords of the input data points
- y: array
The y-coords of the input data points
- kern_nx: float
size (in units of x) of the kernel
- kern_ny: float
size (in units of y) of the kernel
- gridsize: (Nx , Ny) tuple (default: 200x200)
Size of the output grid
- extents: (default: extent of input data) A (xmin, xmax, ymin, ymax)
tuple of the extents of output grid
- nocorrelation: (default: False) If True, the correlation between the
x and y coords will be ignored when preforming the KDE.
- weights: (default: None) An array of the same shape as x & y that
weighs each sample (x_i, y_i) by each value in weights (w_i). Defaults to an array of ones the same size as x & y.
- norm: boolean (default: False)
If False, the output is only corrected for the kernel. If True, the result is normalized such that the integral over the area yields 1.
- Output:
A gridded 2D kernel density estimate of the input points.
-
pynbody.plot.util.
inv_fourier
(p, nmin=1000, mmin=1, mmax=7, nphi=100)[source]¶ Invert a profile with fourier coefficients to yield an overdensity map.
Inputs:
p : a
Profile()
objectOptional Keywords:
nmin (1000) : minimum number of particles required per bin
mmin (1) : lowest multiplicity Fourier component
mmax (7) : highest multiplicity Fourier component
nphi (100) : number of azimuthal bins to use for the map