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).