Source code for highcharts_core.options.axes.y_axis

from typing import Optional, List
from decimal import Decimal

from validator_collection import validators

from highcharts_core import errors
from highcharts_core.decorators import class_sensitive
from highcharts_core.utility_classes.gradients import Gradient
from highcharts_core.utility_classes.patterns import Pattern
from highcharts_core.utility_classes.data_labels import DataLabel

from highcharts_core.options.axes.x_axis import XAxis


[docs]class YAxis(XAxis): """Configuration settings for the Y axis or value axis. Normally, this is the vertical axis, though if the chart is inverted this becomes the horizontal axis.""" def __init__(self, **kwargs): self._max_color = None self._min_color = None self._stack_labels = None self._stops = None self._tooltip_value_format = None self.max_color = kwargs.get('max_color', None) self.min_color = kwargs.get('min_color', None) self.stack_labels = kwargs.get('stack_labels', None) self.stops = kwargs.get('stops', None) self.tooltip_value_format = kwargs.get('tooltip_value_format', None) super().__init__(**kwargs) @property def max_color(self) -> Optional[str | Gradient | Pattern]: """The color used to represent the maximum value of the Y-axis. Defaults to ``'#003399'``. .. warning:: Only applies to :term:`gauge charts <Gauge Chart>`. .. warning:: Will be ignored if :meth:`YAxis.stops` are set. :rtype: :class:`str <python:str>`, :class:`Gradient`, :class:`Pattern``, or :obj:`None <python:None>` """ return self._max_color @max_color.setter def max_color(self, value): from highcharts_core import utility_functions self._max_color = utility_functions.validate_color(value) @property def min_color(self) -> Optional[str | Gradient | Pattern]: """The color used to represent the minimum value of the Y-axis. Defaults to ``'#e6bef5'``. .. warning:: Only applies to :term:`gauge charts <Gauge Chart>`. .. warning:: Will be ignored if :meth:`YAxis.stops` are set. :rtype: :class:`str <python:str>`, :class:`Gradient`, :class:`Pattern``, or :obj:`None <python:None>` """ return self._min_color @min_color.setter def min_color(self, value): from highcharts_core import utility_functions self._min_color = utility_functions.validate_color(value) @property def stack_labels(self) -> Optional[DataLabel]: """Configuration settings for the labels that show the total value for each bar in a stacked column or bar chart. The label will be placed on top of positive columns and below negative columns. In case of an inverted column or bar chart, the label is placed to the right of positive bars and to the left of negative bars. :rtype: :class:`DataLabel` or :obj:`None <python:None>` """ return self._stack_labels @stack_labels.setter @class_sensitive(DataLabel) def stack_labels(self, value): self._stack_labels = value @property def stops(self) -> Optional[List[List[int | float | Decimal | str]]]: """Color stops for use in the gradient of a solid gauge. Defaults to :obj:`None <python:None>`. .. hint:: Use this in cases where a linear gradient between a :meth:`min_color <YAxis.min_color>` and :meth:`max_color <YAxis.max_color>` is not sufficient. .. note:: Expects an iterable of 2-member iterables. Each 2-member iterable should be composed of a number and a string. The number should be a value between 0 and 1 which assigns the relative position of the color in the gradient, while the string should represent the color itself. :rtype: :class:`list <python:list>` of :class:`list <python:list>`, where each second :class:`list <python:list>` consists of a :class:`float <python:float>` and a :class:`str <python:str>` / or :obj:`None <python:None>` """ return self._stops @stops.setter def stops(self, value): if not value: self._stops = None else: value = validators.iterable(value) processed_items = [] for item in value: item = validators.iterable(item) if len(item) != 2: raise errors.HighchartsValueError(f'stops expects a list of 2-' f'member iterables. Received a ' f'{len(item)}-member iterable.') item = [validators.float(item[0], minimum = 0, maximum = 1), validators.string(item[1])] processed_items.append(item) self._stops = processed_items @property def tooltip_value_format(self) -> Optional[str]: """Format string that will be used for ``point.y`` and available in (JavaScript) ``tooltip.pointFormat`` as ``{point.formattedValue}``. Defaults to :obj:`None <python:None>`. If not set, the JavaScript ``{point.formattedValue}`` will use other options, in this order: #. :meth:`YAxis.labels.format <AxisLabelOptions.format>` if set #. If :meth:`YAxis.type` is ``'category'``, then category name will be displayed. #. If :meth:`YAxis.type` is ``'datetime'``, then the value will use the same format as :meth:`YAxis.labels`. #. If :meth:`YAxis.type` is ``'linear'`` or ``'logarithmic'``, then the simple value will be displayed. :rtype: :class:`str <python:str>` or :obj:`None <python:None>`. """ return self._tooltip_value_format @tooltip_value_format.setter def tooltip_value_format(self, value): self._tooltip_value_format = validators.string(value, allow_empty = True) @classmethod def _get_kwargs_from_dict(cls, as_dict): kwargs = { 'accessibility': as_dict.get('accessibility', None), 'align_ticks': as_dict.get('alignTicks', None), 'allow_decimals': as_dict.get('allowDecimals', None), 'alternate_grid_color': as_dict.get('alternateGridColor', None), 'angle': as_dict.get('angle', None), 'breaks': as_dict.get('breaks', None), 'categories': as_dict.get('categories', None), 'ceiling': as_dict.get('ceiling', None), 'class_name': as_dict.get('className', None), 'date_time_label_formats': as_dict.get('dateTimeLabelFormats', None), 'end_on_tick': as_dict.get('endOnTick', None), 'events': as_dict.get('events', None), 'floor': as_dict.get('floor', None), 'grid_line_color': as_dict.get('gridLineColor', None), 'grid_line_dash_style': as_dict.get('gridLineDashStyle', None), 'grid_line_interpolation': as_dict.get('gridLineInterpolation', None), 'grid_line_width': as_dict.get('gridLineWidth', None), 'grid_z_index': as_dict.get('gridZIndex', None), 'id': as_dict.get('id', None), 'labels': as_dict.get('labels', None), 'linked_to': as_dict.get('linkedTo', None), 'margin': as_dict.get('margin', None), 'max': as_dict.get('max', None), 'max_padding': as_dict.get('maxPadding', None), 'min': as_dict.get('min', None), 'minor_grid_line_color': as_dict.get('minorGridLineColor', None), 'minor_grid_line_dash_style': as_dict.get('minorGridLineDashStyle', None), 'minor_grid_line_width': as_dict.get('minorGridLineWidth', None), 'minor_tick_color': as_dict.get('minorTickColor', None), 'minor_tick_interval': as_dict.get('minorTickInterval', None), 'minor_tick_length': as_dict.get('minorTickLength', None), 'minor_tick_position': as_dict.get('minorTickPosition', None), 'minor_ticks': as_dict.get('minorTicks', None), 'minor_tick_width': as_dict.get('minorTickWidth', None), 'min_padding': as_dict.get('minPadding', None), 'min_range': as_dict.get('minRange', None), 'min_tick_interval': as_dict.get('minTickInterval', None), 'offset': as_dict.get('offset', None), 'opposite': as_dict.get('opposite', None), 'pane': as_dict.get('pane', None), 'panning_enabled': as_dict.get('panningEnabled', None), 'plot_bands': as_dict.get('plotBands', None), 'plot_lines': as_dict.get('plotLines', None), 'reversed': as_dict.get('reversed', None), 'reversed_stacks': as_dict.get('reversedStacks', None), 'show_first_label': as_dict.get('showFirstLabel', None), 'show_last_label': as_dict.get('showLastLabel', None), 'soft_max': as_dict.get('softMax', None), 'soft_min': as_dict.get('softMin', None), 'start_of_week': as_dict.get('startOfWeek', None), 'start_on_tick': as_dict.get('startOnTick', None), 'tick_amount': as_dict.get('tickAmount', None), 'tick_color': as_dict.get('tickColor', None), 'tick_interval': as_dict.get('tickInterval', None), 'tick_length': as_dict.get('tickLength', None), 'tickmark_placement': as_dict.get('tickmarkPlacement', None), 'tick_pixel_interval': as_dict.get('tickPixelInterval', None), 'tick_position': as_dict.get('tickPosition', None), 'tick_positioner': as_dict.get('tickPositioner', None), 'tick_positions': as_dict.get('tickPositions', None), 'tick_width': as_dict.get('tickWidth', None), 'title': as_dict.get('title', None), 'type': as_dict.get('type', None), 'unique_names': as_dict.get('uniqueNames', None), 'units': as_dict.get('units', None), 'visible': as_dict.get('visible', None), 'z_index': as_dict.get('zIndex', None), 'zoom_enabled': as_dict.get('zoomEnabled', None), 'crosshair': as_dict.get('crosshair', None), 'height': as_dict.get('height', None), 'left': as_dict.get('left', None), 'line_color': as_dict.get('lineColor', None), 'line_width': as_dict.get('lineWidth', None), 'show_empty': as_dict.get('showEmpty', None), 'top': as_dict.get('top', None), 'width': as_dict.get('width', None), 'max_color': as_dict.get('maxColor', None), 'min_color': as_dict.get('minColor', None), 'stack_labels': as_dict.get('stackLabels', None), 'stops': as_dict.get('stops', None), 'tooltip_value_format': as_dict.get('tooltipValueFormat', None) } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = { 'maxColor': self.max_color, 'minColor': self.min_color, 'stackLabels': self.stack_labels, 'stops': self.stops, 'tooltipValueFormat': self.tooltip_value_format } parent_as_dict = super()._to_untrimmed_dict(in_cls = in_cls) for key in parent_as_dict: untrimmed[key] = parent_as_dict[key] return untrimmed