Initializing axes¶
As in Matplotlib, there are several ways you can initialize the
WCSAxes.
As shown in the rest of the documentation, the
simplest way is to make use of the wcsaxes.WCS class (instead of
astropy.wcs.WCS) and pass this to the
add_subplot() method:
from astropy.wcs import WCS
import matplotlib.pyplot as plt
wcs = WCS(...)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection=wcs)
ax.imshow(...)
If you normally make plots directly with pyplot directly instead of creating axes and figure instances, you can do:
plt.subplot(1, 1, 1, projection=wcs)
plt.imshow(...)
Note that this also works with add_axes() and axes(), e.g.:
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8], projection=wcs)
or:
plt.axes([0.1, 0.1, 0.8, 0.8], projection=wcs)
Note that in the above example, there is no explicit call to the wcsaxes
package. This is because the astropy.wcs.WCS class knows about
wcsaxes, and is able to automatically instantiate a
wcsaxes.WCSAxes object.
Note that any additional arguments passed to
add_subplot(),
add_axes(),
subplot(), or axes(), such
as slices or frame_class, will be passed on to the
WCSAxes class.
Alternative¶
As an alternative to the above methods of initializing
WCSAxes, you can also instantiate WCSAxes
directly and add it to the figure:
from astropy.wcs import WCS
from wcsaxes import WCSAxes
import matplotlib.pyplot as plt
wcs = WCS(...)
fig = plt.figure()
ax = WCSAxes(fig, [0.1, 0.1, 0.8, 0.8], wcs=wcs)
fig.add_axes(ax) # note that the axes have to be explicitly added to the figure
Note that in this example, we can use astropy.wcs.WCS (but
wcsaxes.WCS will also work).