Map (

Introduction contains utility functions for plotting Marvin maps. The main function in this module is plot(), which is thinly wrapped by the plot() method in the Map class for convenience.

Getting Started

plot makes plotting a publication-quality MaNGA map easy with its carefully chosen default parameters.

from import Maps
import as mapplot
maps = Maps(plateifu='8485-1901')
ha = maps['emline_gflux_ha_6564']
fig, ax = mapplot.plot(dapmap=ha)  # == ha.plot()

(Source code, png, hires.png, pdf)


However, you may want to do further processing of the map, so you can override the default DAP value, ivar, and/or mask with your own arrays.

fig, ax = mapplot.plot(dapmap=ha, value=ha.value * 10.)

A dapmap object is not even necessary for plot, though if you do not provide a dapmap object, then you will need to set a value. You will also need to provide other attributes, such as title and cblabel, that are by default set from attributes of the dapmap object.

import numpy as np
fig, ax = mapplot.plot(value=np.random.random((34, 34)), mask=ha.mask)

This flexibilty is especially useful for passing in a custom mask, such as one created with the get_bpt() method. For more explanation of the mask manipulation in this specific example, see the plotting tutorial.

from import Maps
masks, __, __ = maps.get_bpt(show_plot=False)

# Create a bitmask for non-star-forming spaxels by taking the
# complement (`~`) of the BPT global star-forming mask (where True == star-forming)
# and mark those spaxels as "DONOTUSE".
mask_non_sf = ~masks['sf']['global'] * ha.pixmask.labels_to_value('DONOTUSE')

# Do a bitwise OR between DAP mask and non-star-forming mask.
mask = ha.mask | mask_non_sf
fig, ax = mapplot.plot(dapmap=ha, mask=mask)  # == ha.plot(mask=mask)

(Source code, png, hires.png, pdf)


plot lets you build multi-panel plots because it accepts pre-defined matplotlib.figure and matplotlib.axes objects.

import matplotlib.pyplot as plt'seaborn-darkgrid')  # set matplotlib style sheet

plateifus = ['8485-1901', '7443-12701']
mapnames = ['stellar_vel', 'stellar_sigma']

rows = len(plateifus)
cols = len(mapnames)
fig, axes = plt.subplots(rows, cols, figsize=(8, 8))
for row, plateifu in zip(axes, plateifus):
    maps = Maps(plateifu=plateifu)
    for ax, mapname in zip(row, mapnames):
        mapplot.plot(dapmap=maps[mapname], fig=fig, ax=ax, title=' '.join((plateifu, mapname)))


(Source code, png, hires.png, pdf)


Using map

For more in-depth discussion of using map, please see the following sections:

Default Plotting Parameters

Property Type Bad Data Bitmasks Colormap Percentile Clip Symmetric Colorbar Minimum SNR
default UNRELIABLE, DONOTUSE linearlab 5, 95 False 1
velocities UNRELIABLE, DONOTUSE RdBu_r 10, 90 True 0a
velocity dispersions UNRELIABLE, DONOTUSE inferno 10, 90 False 1

a Velocities do not have a minimum SNR. This allows spaxels near the zero-velocity contour to be displayed, but users are cautioned that some spaxels could have arbitrarily low SNRs.

Note: MPL-4 uses the same default plotting parameters as MPL-5, except the Bad Data Bitmasks, which use bit 1 (roughly DONOTUSE) for all properties.


Spaxels with Low Signal-to-Noise

mask_low_snr() creates a mask of a map where the data is below a minimum signal-to-noise ratio.

from import Maps
import as mapplot
maps = Maps(plateifu='8485-1901')
ha = maps['emline_gflux_ha_6564']
low_snr = mapplot.mask_low_snr(value=ha.value, ivar=ha.ivar, snr_min=1)

Important: In 2.1.4, the call signature is low_snr_mask(value, ivar, snr_min). In version 2.2.0, this changes to mask_low_snr(value, ivar, snr_min).

Spaxels with Negative Values

mask_neg_values() creates a mask of a map where the values are negative. This is necessary to avoid erros when using a logarithmic colorbar.

from import Maps
import as mapplot
maps = Maps(plateifu='8485-1901')
ha = maps['emline_gflux_ha_6564']
neg_values = mapplot.mask_neg_values(value=ha.value)

Important: In 2.1.4, the call signature is log_colorbar_mask(value, log_cb). In version 2.2.0, this changes to mask_neg_values(value).

Set Title

set_title() sets the title of the axis object. You can directly specify the title or construct it from the property name (and channel name).

import as mapplot
title = mapplot.set_title(title=None,,



Functions, …) Mask spaxels with a signal-to-noise ratio below some threshold. Mask spaxels with negative values.*args, **kwargs) Make single panel map or one panel of multi-panel map plot.[title, …]) Set title for map.