|
# Copyright 2015 Bloomberg Finance L.P.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
r"""
|
|
|
|
====
|
|
Axes
|
|
====
|
|
|
|
.. currentmodule:: bqplot.axes
|
|
|
|
.. autosummary::
|
|
:toctree: _generate/
|
|
|
|
Axis
|
|
ColorAxis
|
|
"""
|
|
|
|
from traitlets import Int, Unicode, Instance, Enum, Dict, Bool
|
|
from traittypes import Array
|
|
from ipywidgets import Widget, Color, widget_serialization
|
|
|
|
from .scales import Scale, ColorScale
|
|
from .traits import array_serialization, array_dimension_bounds
|
|
from ._version import __frontend_version__
|
|
|
|
|
|
def register_axis(key=None):
|
|
"""Returns a decorator registering an axis class in the axis type registry.
|
|
|
|
If no key is provided, the class name is used as a key. A key is provided
|
|
for each core bqplot axis so that the frontend can use this key regardless
|
|
of the kernel language.
|
|
"""
|
|
def wrap(axis):
|
|
name = key if key is not None else axis.__module__ + axis.__name__
|
|
BaseAxis.axis_types[name] = axis
|
|
return axis
|
|
return wrap
|
|
|
|
|
|
class BaseAxis(Widget):
|
|
axis_types = {}
|
|
_view_module = Unicode('bqplot').tag(sync=True)
|
|
_model_module = Unicode('bqplot').tag(sync=True)
|
|
_view_module_version = Unicode(__frontend_version__).tag(sync=True)
|
|
_model_module_version = Unicode(__frontend_version__).tag(sync=True)
|
|
|
|
|
|
@register_axis('bqplot.Axis')
|
|
class Axis(BaseAxis):
|
|
|
|
"""A line axis.
|
|
|
|
A line axis is the visual representation of a numerical or date scale.
|
|
|
|
Attributes
|
|
----------
|
|
icon: string (class-level attribute)
|
|
The font-awesome icon name for this object.
|
|
axis_types: dict (class-level attribute)
|
|
A registry of existing axis types.
|
|
orientation: {'horizontal', 'vertical'}
|
|
The orientation of the axis, either vertical or horizontal
|
|
side: {'bottom', 'top', 'left', 'right'} or None (default: None)
|
|
The side of the axis, either bottom, top, left or right.
|
|
label: string (default: '')
|
|
The axis label
|
|
tick_format: string or None (default: '')
|
|
The tick format for the axis, for dates use d3 string formatting.
|
|
scale: Scale
|
|
The scale represented by the axis
|
|
num_ticks: int or None (default: None)
|
|
If tick_values is None, number of ticks
|
|
tick_values: numpy.ndarray or None (default: None)
|
|
Tick values for the axis
|
|
offset: dict (default: {})
|
|
Contains a scale and a value {'scale': scale or None,
|
|
'value': value of the offset}
|
|
If offset['scale'] is None, the corresponding figure scale is used
|
|
instead.
|
|
label_location: {'middle', 'start', 'end'}
|
|
The location of the label along the axis, one of 'start', 'end' or
|
|
'middle'
|
|
label_color: Color or None (default: None)
|
|
The color of the axis label
|
|
grid_lines: {'none', 'solid', 'dashed'}
|
|
The display of the grid lines
|
|
grid_color: Color or None (default: None)
|
|
The color of the grid lines
|
|
color: Color or None (default: None)
|
|
The color of the line
|
|
label_offset: string or None (default: None)
|
|
Label displacement from the axis line. Units allowed are 'em', 'px'
|
|
and 'ex'. Positive values are away from the figure and negative
|
|
values are towards the figure with respect to the axis line.
|
|
visible: bool (default: True)
|
|
A visibility toggle for the axis
|
|
tick_style: Dict (default: {})
|
|
Dictionary containing the CSS-style of the text for the ticks.
|
|
For example: font-size of the text can be changed by passing
|
|
`{'font-size': 14}`
|
|
tick_rotate: int (default: 0)
|
|
Degrees to rotate tick labels by.
|
|
"""
|
|
icon = 'fa-arrows'
|
|
orientation = Enum(['horizontal', 'vertical'], default_value='horizontal')\
|
|
.tag(sync=True)
|
|
side = Enum(['bottom', 'top', 'left', 'right'],
|
|
allow_none=True, default_value=None).tag(sync=True)
|
|
label = Unicode().tag(sync=True)
|
|
grid_lines = Enum(['none', 'solid', 'dashed'], default_value='solid')\
|
|
.tag(sync=True)
|
|
tick_format = Unicode(None, allow_none=True).tag(sync=True)
|
|
scale = Instance(Scale).tag(sync=True, **widget_serialization)
|
|
num_ticks = Int(default_value=None, allow_none=True).tag(sync=True)
|
|
tick_values = Array(None, allow_none=True)\
|
|
.tag(sync=True, **array_serialization)\
|
|
.valid(array_dimension_bounds(1, 1))
|
|
offset = Dict().tag(sync=True, **widget_serialization)
|
|
label_location = Enum(['middle', 'start', 'end'],
|
|
default_value='middle').tag(sync=True)
|
|
label_color = Color(None, allow_none=True).tag(sync=True)
|
|
grid_color = Color(None, allow_none=True).tag(sync=True)
|
|
color = Color(None, allow_none=True).tag(sync=True)
|
|
label_offset = Unicode(default_value=None, allow_none=True).tag(sync=True)
|
|
|
|
visible = Bool(True).tag(sync=True)
|
|
tick_style = Dict().tag(sync=True)
|
|
tick_rotate = Int(0).tag(sync=True)
|
|
|
|
_view_name = Unicode('Axis').tag(sync=True)
|
|
_model_name = Unicode('AxisModel').tag(sync=True)
|
|
_ipython_display_ = None # We cannot display an axis outside of a figure.
|
|
|
|
|
|
@register_axis('bqplot.ColorAxis')
|
|
class ColorAxis(Axis):
|
|
|
|
"""A colorbar axis.
|
|
|
|
A color axis is the visual representation of a color scale.
|
|
|
|
Attributes
|
|
----------
|
|
scale: ColorScale
|
|
The scale represented by the axis
|
|
"""
|
|
orientation = Enum(['horizontal', 'vertical'],
|
|
default_value='horizontal').tag(sync=True)
|
|
side = Enum(['bottom', 'top', 'left', 'right'],
|
|
default_value='bottom').tag(sync=True)
|
|
label = Unicode().tag(sync=True)
|
|
scale = Instance(ColorScale).tag(sync=True, **widget_serialization)
|
|
_view_name = Unicode('ColorAxis').tag(sync=True)
|
|
_model_name = Unicode('ColorAxisModel').tag(sync=True)
|