Making Interactive Maps with `whampy`
====================================
You can make interactive maps of the WHAM data where you can click on the map
and have a spectrum plotted from the nearest WHAM pointing using the `~whampy.whampyTableMixin.click_map` method::
>>> import matplotlib.pyplot as plt
>>> %matplotlib notebook
>>> from whampy.skySurvey import SkySurvey
>>> survey = SkySurvey()
>>> click_map = survey.click_map()
.. image:: images/quick_click_map.png
:width: 600
`~whampy.whampyTableMixin.click_map` will accept and pass keywords to `~whampy.whampyTableMixin.intensity_map`. You can
also pass in your own set of figure and axes instances to customize the orientation, shape, and size of axes. The example below uses the optional dependency `cartopy `_ and this package will need to be installed separately following the instructions on its documentation::
>>> import cartopy.crs as ccrs
>>> fig = plt.figure()
>>> image_ax = fig.add_subplot(111, projection = ccrs.Mollweide())
>>> click_map = survey.click_map(fig = fig, image_ax = image_ax,
... spectra_kwargs = {"c":'b', "ls": ":"})
.. image:: images/custom_click_map.png
:width: 600
Making Interactive Maps that overplot Additional Spectra
--------------------------------------------------------
You can also make these interactive maps and have clicks additionally plot another spectra from a different source.
This additional data can be from a FITS Data cube or another SkySurvey object for other wavelength WHAM observations.
This feature uses the optional dependency `spectral-cube ` package to handle FITS data cubes and this package will need to be installed separately following the instructions on its documentation. spectral-cube can read in 3D datacubes that are regularly gridded with an NAXIS = 3 keyword set in its header and that contains a spectral axis (velocity, wavelength, frequency).::
>>> fits_cube_path = "hi_data_cube.fits"
>>> fig = plt.figure()
>>> click_map = survey.click_map(fig = fig, over_data = fits_cube_path)
.. image:: images/over_data_click_map.png
:width: 600
You can set the velocity range to be static to focus on certain regions if desired::
>>> spec_ax = click_map.line_ax
>>> spec_ax.set_xlim([-150,30])
.. image:: images/over_data_click_map_custom_xlim.png
:width: 600