Source code for colour.plotting.corresponding

# -*- coding: utf-8 -*-
"""
Corresponding Chromaticities Prediction Plotting
================================================

Defines corresponding chromaticities prediction plotting objects:

-   :func:`colour.plotting.plot_corresponding_chromaticities_prediction`
"""

from __future__ import division

from colour.corresponding import corresponding_chromaticities_prediction
from colour.plotting import (COLOUR_STYLE_CONSTANTS, artist,
                             plot_chromaticity_diagram_CIE1976UCS,
                             override_style, render)

__author__ = 'Colour Developers'
__copyright__ = 'Copyright (C) 2013-2019 - Colour Developers'
__license__ = 'New BSD License - https://opensource.org/licenses/BSD-3-Clause'
__maintainer__ = 'Colour Developers'
__email__ = 'colour-science@googlegroups.com'
__status__ = 'Production'

__all__ = ['plot_corresponding_chromaticities_prediction']


[docs]@override_style() def plot_corresponding_chromaticities_prediction(experiment=1, model='Von Kries', transform='CAT02', **kwargs): """ Plots given chromatic adaptation model corresponding chromaticities prediction. Parameters ---------- experiment : int, optional Corresponding chromaticities prediction experiment number. model : unicode, optional Corresponding chromaticities prediction model name. transform : unicode, optional Transformation to use with *Von Kries* chromatic adaptation model. Other Parameters ---------------- \\**kwargs : dict, optional {:func:`colour.plotting.artist`, :func:`colour.plotting.diagrams.plot_chromaticity_diagram`, :func:`colour.plotting.render`}, Please refer to the documentation of the previously listed definitions. Returns ------- tuple Current figure and axes. Examples -------- >>> plot_corresponding_chromaticities_prediction(1, 'Von Kries', 'CAT02') ... # doctest: +SKIP .. image:: ../_static/Plotting_\ Plot_Corresponding_Chromaticities_Prediction.png :align: center :alt: plot_corresponding_chromaticities_prediction """ settings = {'uniform': True} settings.update(kwargs) _figure, axes = artist(**settings) title = (('Corresponding Chromaticities Prediction\n{0} ({1}) - ' 'Experiment {2}\nCIE 1976 UCS Chromaticity Diagram').format( model, transform, experiment) if model.lower() in ('von kries', 'vonkries') else ('Corresponding Chromaticities Prediction\n{0} - ' 'Experiment {1}\nCIE 1976 UCS Chromaticity Diagram').format( model, experiment)) settings = {'axes': axes, 'title': title} settings.update(kwargs) settings['standalone'] = False plot_chromaticity_diagram_CIE1976UCS(**settings) results = corresponding_chromaticities_prediction( experiment, transform=transform) for result in results: _name, uvp_t, uvp_m, uvp_p = result axes.arrow( uvp_t[0], uvp_t[1], uvp_p[0] - uvp_t[0] - 0.1 * (uvp_p[0] - uvp_t[0]), uvp_p[1] - uvp_t[1] - 0.1 * (uvp_p[1] - uvp_t[1]), color=COLOUR_STYLE_CONSTANTS.colour.dark, head_width=0.005, head_length=0.005) axes.plot( uvp_t[0], uvp_t[1], 'o', color=COLOUR_STYLE_CONSTANTS.colour.brightest, markeredgecolor=COLOUR_STYLE_CONSTANTS.colour.dark, markersize=(COLOUR_STYLE_CONSTANTS.geometry.short * 6 + COLOUR_STYLE_CONSTANTS.geometry.short * 0.75), markeredgewidth=COLOUR_STYLE_CONSTANTS.geometry.short * 0.75) axes.plot( uvp_m[0], uvp_m[1], '^', color=COLOUR_STYLE_CONSTANTS.colour.brightest, markeredgecolor=COLOUR_STYLE_CONSTANTS.colour.dark, markersize=(COLOUR_STYLE_CONSTANTS.geometry.short * 6 + COLOUR_STYLE_CONSTANTS.geometry.short * 0.75), markeredgewidth=COLOUR_STYLE_CONSTANTS.geometry.short * 0.75) axes.plot( uvp_p[0], uvp_p[1], '^', color=COLOUR_STYLE_CONSTANTS.colour.dark) settings.update({ 'standalone': True, 'bounding_box': (-0.1, 0.7, -0.1, 0.7), }) settings.update(kwargs) return render(**settings)