Source code for aplpy.tick_labels
# -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, division, unicode_literals
from .decorators import auto_refresh, fixdocstring
__all__ = ['TickLabels']
[docs]class TickLabels(object):
def __init__(self, parent):
self._figure = parent._figure
self._ax = parent.ax
self._wcs = parent.ax.wcs
self.x = parent.x
self.y = parent.y
self.set_style('plain')
[docs] @auto_refresh
def set_xformat(self, xformat):
"""
Set the format of the x-axis tick labels.
If the x-axis type is ``longitude`` or ``latitude``, then the options
are:
* ``d.ddddd`` - decimal degrees, where the number of decimal places can be varied
* ``hh`` or ``dd`` - hours (or degrees)
* ``hh:mm`` or ``dd:mm`` - hours and minutes (or degrees and arcminutes)
* ``hh:mm:ss`` or ``dd:mm:ss`` - hours, minutes, and seconds (or degrees, arcminutes, and arcseconds)
* ``hh:mm:ss.ss`` or ``dd:mm:ss.ss`` - hours, minutes, and seconds (or degrees, arcminutes, and arcseconds), where the number of decimal places can be varied.
If the x-axis type is ``scalar``, then the format should be a valid
python string format beginning with a ``%``.
If one of these arguments is not specified, the format for that axis
is left unchanged.
"""
if 'dd.' in xformat:
xformat = xformat.replace('ddd.', 'd.').replace('dd.', 'd.')
self._ax.coords[self.x].set_major_formatter(xformat)
[docs] @auto_refresh
def set_yformat(self, yformat):
"""
Set the format of the y-axis tick labels.
If the y-axis type is ``longitude`` or ``latitude``, then the options
are:
* ``d.ddddd`` - decimal degrees, where the number of decimal places can be varied
* ``hh`` or ``dd`` - hours (or degrees)
* ``hh:mm`` or ``dd:mm`` - hours and minutes (or degrees and arcminutes)
* ``hh:mm:ss`` or ``dd:mm:ss`` - hours, minutes, and seconds (or degrees, arcminutes, and arcseconds)
* ``hh:mm:ss.ss`` or ``dd:mm:ss.ss`` - hours, minutes, and seconds (or degrees, arcminutes, and arcseconds), where the number of decimal places can be varied.
If the y-axis type is ``scalar``, then the format should be a valid
python string format beginning with a ``%``.
If one of these arguments is not specified, the format for that axis
is left unchanged.
"""
if 'dd.' in yformat:
yformat = yformat.replace('ddd.', 'd.').replace('dd.', 'd.')
self._ax.coords[self.y].set_major_formatter(yformat)
[docs] @auto_refresh
def set_style(self, style):
"""
Set the format of the x-axis tick labels.
This can be 'colons' or 'plain':
* 'colons' uses colons as separators, for example 31:41:59.26 +27:18:28.1
* 'plain' uses letters and symbols as separators, for example 31h41m59.26s +27ยบ18'28.1"
"""
if style not in ['colons', 'plain']:
raise Exception("Label style should be one of colons/plain")
self.style = style
for coord in [self.x, self.y]:
coord_type = self._ax.coords[coord].coord_type
if coord_type in ['longitude', 'latitude']:
if style == 'colons':
sep = (':', ':', '')
else:
sep = None
self._ax.coords[coord].set_separator(sep)
[docs] @auto_refresh
@fixdocstring
def set_font(self, **kwargs):
"""
Set the font of the tick labels.
Parameters
----------
common: family, style, variant, stretch, weight, size, fontproperties
Notes
-----
Default values are set by matplotlib or previously set values if
set_font has already been called. Global default values can be set by
editing the matplotlibrc file.
"""
self._ax.coords[self.x].set_ticklabel(**kwargs)
self._ax.coords[self.y].set_ticklabel(**kwargs)
[docs] @auto_refresh
def show(self):
"""
Show the x- and y-axis tick labels.
"""
self.show_x()
self.show_y()
[docs] @auto_refresh
def hide(self):
"""
Hide the x- and y-axis tick labels.
"""
self.hide_x()
self.hide_y()
[docs] @auto_refresh
def show_x(self):
"""
Show the x-axis tick labels.
"""
self._ax.coords[self.x].set_ticklabel_visible(True)
[docs] @auto_refresh
def hide_x(self):
"""
Hide the x-axis tick labels.
"""
self._ax.coords[self.x].set_ticklabel_visible(False)
[docs] @auto_refresh
def show_y(self):
"""
Show the y-axis tick labels.
"""
self._ax.coords[self.y].set_ticklabel_visible(True)
[docs] @auto_refresh
def hide_y(self):
"""
Hide the y-axis tick labels.
"""
self._ax.coords[self.y].set_ticklabel_visible(False)
[docs] @auto_refresh
def set_xposition(self, position):
"""
Set the position of the x-axis tick labels ('top' or 'bottom')
"""
if position == 'bottom':
self._ax.coords[self.x].set_ticklabel_position('b')
elif position == 'top':
self._ax.coords[self.x].set_ticklabel_position('t')
else:
raise ValueError("position should be one of 'top' or 'bottom'")
[docs] @auto_refresh
def set_yposition(self, position):
"""
Set the position of the y-axis tick labels ('left' or 'right')
"""
if position == 'left':
self._ax.coords[self.y].set_ticklabel_position('l')
elif position == 'right':
self._ax.coords[self.y].set_ticklabel_position('r')
else:
raise ValueError("position should be one of 'left' or 'right'")