8000 Adding names to the color in the new Vega10 color cycle by trpham · Pull Request #7343 · matplotlib/matplotlib · GitHub
[go: up one dir, main page]

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

Next Next commit
Adding names to the color in the new Vega10 color cycle
  • Loading branch information
trpham committed Oct 25, 2016
commit f819a4407dc9181c57dc6c36158fe40e17ff717f
1 change: 1 addition & 0 deletions doc/users/colors.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ 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 ``{'blue', 'orange', 'green', 'red', 'purple', 'brown', 'pink', 'gray', 'olive', 'cyan'}``
Copy link
Member

Choose a reason for hiding this comment

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

Thanks for thinking about documenting this change! That's a really important part of making new features accessible to users.

I think you should add the "vega" prefix to be more specific.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Fixed


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)}


VEGA10_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 "vega:<name>" to avoid name collisions.
Copy link
Member

Choose a reason for hiding this comment

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

I think we decided on 'vega10' as the prefix.

Copy link
Member

Choose a reason for hiding this comment

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

I don't think there was a consensus on that (and I'm not sure it's necessary either.)

VEGA10_COLORS = {'vega:' + name: value for name, value in VEGA10_COLORS.items()}
8000
Copy link
Member

Choose a reason for hiding this comment

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

That line is slightly too long for pep8 (1 character too long). The tests are failing because of this line.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@NelleV I did notice that, but it's exactly 80 characters, and I thought leave it like that way is cleaner. Let's me fix it.


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, VEGA10_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(VEGA10_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': VEGA10_COLORS}
Copy link
Member

Choose a reason for hiding this comment

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

The 10 is missing in the name: it should be 'vega10'

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
0