Skip to content

Adding names to the color in the new Vega10 color cycle #7343

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3 changes: 3 additions & 0 deletions doc/users/colors.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ it can be provided as:
* a name from the `xkcd color survey <https://xkcd.com/color/rgb/>`__
prefixed with ``'xkcd:'`` (e.g., ``'xkcd:sky blue'``)
* one of ``{'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9'}``
* one of ``{'vega:blue', 'vega:orange', 'vega:green',
'vega:red', 'vega:purple', 'vega:brown', 'vega:pink',
'vega:gray', 'vega:olive', 'vega:cyan'}``

All string specifications of color are case-insensitive.

Expand Down
17 changes: 17 additions & 0 deletions lib/matplotlib/_color_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,23 @@
'w': (1, 1, 1)}


VEGA_COLORS = {
'blue': '#1f77b4',
'orange': '#ff7f0e',
'green': '#2ca02c',
'red': '#d62728',
'purple': '#9467bd',
'brown': '#8c564b',
'pink': '#e377c2',
'gray': '#7f7f7f',
'olive': '#bcbd22',
'cyan': '#17becf'}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pep8 might want that closing brace to be on the next line. Not sure though.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't. That line is fine pep8-wise.



# Normalize name to "vega10:<name>" to avoid name collisions.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment is wrong, it's "vega:".

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(... didn't notice this PR has been superseded by #7639...)

VEGA_COLORS = {'vega:' + name: value for name, value in VEGA_COLORS.items()}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe change this dictionary comprehension to a for loop for better readability? It seems like too much is being done in one statement.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As far as comprehensions go, this one is pretty simple; I don't think it needs to be rewritten. At most, add a break before for.


# This mapping of color names -> hex values is taken from
# a survey run by Randel Monroe see:
# http://blog.xkcd.com/2010/05/03/color-survey-results/
Expand Down
7 changes: 4 additions & 3 deletions lib/matplotlib/colors.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@

import numpy as np
import matplotlib.cbook as cbook
from ._color_data import BASE_COLORS, CSS4_COLORS, XKCD_COLORS
from ._color_data import BASE_COLORS, VEGA_COLORS, CSS4_COLORS, XKCD_COLORS


class _ColorMapping(dict):
Expand All @@ -86,6 +86,7 @@ def __delitem__(self, key, value):
# Set by reverse priority order.
_colors_full_map.update(XKCD_COLORS)
_colors_full_map.update(CSS4_COLORS)
_colors_full_map.update(VEGA_COLORS)
_colors_full_map.update(BASE_COLORS)
_colors_full_map = _ColorMapping(_colors_full_map)

Expand Down Expand Up @@ -250,7 +251,7 @@ def to_hex(c, keep_alpha=False):
### Backwards-compatible color-conversion API

cnames = CSS4_COLORS
COLOR_NAMES = {'xkcd': XKCD_COLORS, 'css4': CSS4_COLORS}
COLOR_NAMES = {'xkcd': XKCD_COLORS, 'css4': CSS4_COLORS, 'vega': VEGA_COLORS}
hexColorPattern = re.compile("\A#[a-fA-F0-9]{6}\Z")


Expand Down Expand Up @@ -401,7 +402,7 @@ class Colormap(object):

"""
def __init__(self, name, N=256):
r"""
"""
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Parameters
----------
name : str
Expand Down
3 changes: 2 additions & 1 deletion lib/matplotlib/tests/test_colors.py
Original file line number Diff line number Diff line change
Expand Up @@ -572,9 +572,10 @@ def angled_plane(azimuth, elevation, angle, x, y):
assert_array_almost_equal(h, np.cos(np.radians(angle)))


def test_xkcd():
def test_color_names():
assert mcolors.to_hex("blue") == "#0000ff"
assert mcolors.to_hex("xkcd:blue") == "#0343df"
assert mcolors.to_hex("vega:blue") == "#1f77b4"


def _sph2cart(theta, phi):
Expand Down