python palette - Couleurs nommées dans matplotlib




2 Answers

Matplotlib utilise un dictionnaire de son module colors.py.

Pour imprimer les noms, utilisez:

# python2:

import matplotlib
for name, hex in matplotlib.colors.cnames.iteritems():
    print(name, hex)

# python3:

import matplotlib
for name, hex in matplotlib.colors.cnames.items():
    print(name, hex)

C'est le dictionnaire complet:

cnames = {
'aliceblue':            '#F0F8FF',
'antiquewhite':         '#FAEBD7',
'aqua':                 '#00FFFF',
'aquamarine':           '#7FFFD4',
'azure':                '#F0FFFF',
'beige':                '#F5F5DC',
'bisque':               '#FFE4C4',
'black':                '#000000',
'blanchedalmond':       '#FFEBCD',
'blue':                 '#0000FF',
'blueviolet':           '#8A2BE2',
'brown':                '#A52A2A',
'burlywood':            '#DEB887',
'cadetblue':            '#5F9EA0',
'chartreuse':           '#7FFF00',
'chocolate':            '#D2691E',
'coral':                '#FF7F50',
'cornflowerblue':       '#6495ED',
'cornsilk':             '#FFF8DC',
'crimson':              '#DC143C',
'cyan':                 '#00FFFF',
'darkblue':             '#00008B',
'darkcyan':             '#008B8B',
'darkgoldenrod':        '#B8860B',
'darkgray':             '#A9A9A9',
'darkgreen':            '#006400',
'darkkhaki':            '#BDB76B',
'darkmagenta':          '#8B008B',
'darkolivegreen':       '#556B2F',
'darkorange':           '#FF8C00',
'darkorchid':           '#9932CC',
'darkred':              '#8B0000',
'darksalmon':           '#E9967A',
'darkseagreen':         '#8FBC8F',
'darkslateblue':        '#483D8B',
'darkslategray':        '#2F4F4F',
'darkturquoise':        '#00CED1',
'darkviolet':           '#9400D3',
'deeppink':             '#FF1493',
'deepskyblue':          '#00BFFF',
'dimgray':              '#696969',
'dodgerblue':           '#1E90FF',
'firebrick':            '#B22222',
'floralwhite':          '#FFFAF0',
'forestgreen':          '#228B22',
'fuchsia':              '#FF00FF',
'gainsboro':            '#DCDCDC',
'ghostwhite':           '#F8F8FF',
'gold':                 '#FFD700',
'goldenrod':            '#DAA520',
'gray':                 '#808080',
'green':                '#008000',
'greenyellow':          '#ADFF2F',
'honeydew':             '#F0FFF0',
'hotpink':              '#FF69B4',
'indianred':            '#CD5C5C',
'indigo':               '#4B0082',
'ivory':                '#FFFFF0',
'khaki':                '#F0E68C',
'lavender':             '#E6E6FA',
'lavenderblush':        '#FFF0F5',
'lawngreen':            '#7CFC00',
'lemonchiffon':         '#FFFACD',
'lightblue':            '#ADD8E6',
'lightcoral':           '#F08080',
'lightcyan':            '#E0FFFF',
'lightgoldenrodyellow': '#FAFAD2',
'lightgreen':           '#90EE90',
'lightgray':            '#D3D3D3',
'lightpink':            '#FFB6C1',
'lightsalmon':          '#FFA07A',
'lightseagreen':        '#20B2AA',
'lightskyblue':         '#87CEFA',
'lightslategray':       '#778899',
'lightsteelblue':       '#B0C4DE',
'lightyellow':          '#FFFFE0',
'lime':                 '#00FF00',
'limegreen':            '#32CD32',
'linen':                '#FAF0E6',
'magenta':              '#FF00FF',
'maroon':               '#800000',
'mediumaquamarine':     '#66CDAA',
'mediumblue':           '#0000CD',
'mediumorchid':         '#BA55D3',
'mediumpurple':         '#9370DB',
'mediumseagreen':       '#3CB371',
'mediumslateblue':      '#7B68EE',
'mediumspringgreen':    '#00FA9A',
'mediumturquoise':      '#48D1CC',
'mediumvioletred':      '#C71585',
'midnightblue':         '#191970',
'mintcream':            '#F5FFFA',
'mistyrose':            '#FFE4E1',
'moccasin':             '#FFE4B5',
'navajowhite':          '#FFDEAD',
'navy':                 '#000080',
'oldlace':              '#FDF5E6',
'olive':                '#808000',
'olivedrab':            '#6B8E23',
'orange':               '#FFA500',
'orangered':            '#FF4500',
'orchid':               '#DA70D6',
'palegoldenrod':        '#EEE8AA',
'palegreen':            '#98FB98',
'paleturquoise':        '#AFEEEE',
'palevioletred':        '#DB7093',
'papayawhip':           '#FFEFD5',
'peachpuff':            '#FFDAB9',
'peru':                 '#CD853F',
'pink':                 '#FFC0CB',
'plum':                 '#DDA0DD',
'powderblue':           '#B0E0E6',
'purple':               '#800080',
'red':                  '#FF0000',
'rosybrown':            '#BC8F8F',
'royalblue':            '#4169E1',
'saddlebrown':          '#8B4513',
'salmon':               '#FA8072',
'sandybrown':           '#FAA460',
'seagreen':             '#2E8B57',
'seashell':             '#FFF5EE',
'sienna':               '#A0522D',
'silver':               '#C0C0C0',
'skyblue':              '#87CEEB',
'slateblue':            '#6A5ACD',
'slategray':            '#708090',
'snow':                 '#FFFAFA',
'springgreen':          '#00FF7F',
'steelblue':            '#4682B4',
'tan':                  '#D2B48C',
'teal':                 '#008080',
'thistle':              '#D8BFD8',
'tomato':               '#FF6347',
'turquoise':            '#40E0D0',
'violet':               '#EE82EE',
'wheat':                '#F5DEB3',
'white':                '#FFFFFF',
'whitesmoke':           '#F5F5F5',
'yellow':               '#FFFF00',
'yellowgreen':          '#9ACD32'}

Vous pourriez les tracer comme ceci:

import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib.colors as colors
import math


fig = plt.figure()
ax = fig.add_subplot(111)

ratio = 1.0 / 3.0
count = math.ceil(math.sqrt(len(colors.cnames)))
x_count = count * ratio
y_count = count / ratio
x = 0
y = 0
w = 1 / x_count
h = 1 / y_count

for c in colors.cnames:
    pos = (x / x_count, y / y_count)
    ax.add_patch(patches.Rectangle(pos, w, h, color=c))
    ax.annotate(c, xy=pos)
    if y >= y_count-1:
        x += 1
        y = 0
    else:
        y += 1

plt.show()
color list

Quelles couleurs nommées sont disponibles dans matplotlib pour une utilisation dans les parcelles? Je peux trouver une liste sur la documentation matplotlib qui prétend que ce sont les seuls noms:

b: blue
g: green
r: red
c: cyan
m: magenta
y: yellow
k: black
w: white

Cependant, j'ai trouvé que ces couleurs peuvent également être utilisées, au moins dans ce contexte:

scatter(X,Y, color='red')
scatter(X,Y, color='orange')
scatter(X,Y, color='darkgreen')

mais ceux-ci ne sont pas sur la liste ci-dessus. Est-ce que quelqu'un connaît une liste exhaustive des couleurs nommées qui sont disponibles?




J'oublie constamment les noms des couleurs que je veux utiliser et je reviens toujours à cette question =)

Les réponses précédentes sont excellentes, mais je trouve un peu difficile d'avoir un aperçu des couleurs disponibles à partir de l'image affichée. Je préfère que les couleurs soient groupées avec des couleurs similaires, donc j'ai légèrement modifié la réponse matplotlib qui a été mentionnée dans un commentaire ci-dessus pour obtenir une liste de couleurs triée en colonnes. L'ordre n'est pas identique à la façon dont je trierais par oeil, mais je pense que cela donne un bon aperçu.

J'ai mis à jour l'image et le code pour refléter que 'rebeccapurple' a été ajouté et les trois couleurs de sauge ont été déplacées sous le préfixe 'xkcd:' depuis que j'ai posté cette réponse à l'origine.

Je n'ai vraiment pas beaucoup changé depuis l'exemple de matplotlib, mais voici le code pour l'exhaustivité.

"""

Visualization of named colors.

Simple plot example with the named colors and its visual representation.
"""

from __future__ import (absolute_import, division, print_function,
                        unicode_literals)

import six

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import colors

# Reverse this if condition to print only the xkcd and tableau colors
colors_ = [color for color in list(six.iteritems(colors.cnames)) if not ':' in color]

# Add the single letter colors.
for name, rgb in six.iteritems(colors.ColorConverter.colors):
    if len(name) == 1:
        hex_ = colors.rgb2hex(rgb)
        colors_.append((name, hex_))

# Transform to hex color values.
hex_ = [color[1] for color in colors_]
# Get the rgb equivalent.
rgb = [colors.hex2color(color) for color in hex_]
# Get the hsv equivalent.
hsv = [colors.rgb_to_hsv(color) for color in rgb]

# Split the hsv values to sort.
hue = [color[0] for color in hsv]
sat = [color[1] for color in hsv]
val = [color[2] for color in hsv]

# Sort by hue, saturation and value.
ind = np.lexsort((val, sat, hue))
sorted_colors = [colors_[i] for i in ind]

n = len(sorted_colors)
ncols = 4
nrows = int(np.ceil(1. * n / ncols))

fig, ax = plt.subplots(1, figsize=(16,16))

X, Y = fig.get_dpi() * fig.get_size_inches()

# row height
h = Y / (nrows + 1)
# col width
w = X / ncols


for i, (name, color) in enumerate(sorted_colors):
    col = int(i / nrows)
    row = i % nrows
    y = Y - (row * h) - h

    xi_line = w * (col + 0.05)
    xf_line = w * (col + 0.3)
    xi_text = w * (col + 0.35)

    ax.text(xi_text, y, name, fontsize=(h * 0.47),
            horizontalalignment='left',
            verticalalignment='center')

    # Add extra white line between colors
    ax.hlines(y + h * 0.1, xi_line, xf_line, color=color, linewidth=(h * 0.6))

ax.set_xlim(0, X)
ax.set_ylim(0, Y)
ax.set_axis_off()

fig.subplots_adjust(left=0, right=1,
                    top=1, bottom=0,
                    hspace=0, wspace=0)
plt.show()

Couleurs nommées supplémentaires

Mis à jour le 2017-10-25. J'ai fusionné mes mises à jour précédentes dans cette section.

xkcd

Si vous souhaitez utiliser des couleurs nommées supplémentaires lors du traçage avec matplotlib, vous pouvez utiliser les noms de couleurs crowdsourced xkcd , via le préfixe 'xkcd:':

plt.plot([1,2], lw=4, c='xkcd:baby poop green')

Maintenant, vous avez accès à une pléthore de couleurs nommées!

Tableau

Les couleurs Tableau par défaut sont disponibles dans matplotlib via le préfixe 'tab:':

plt.plot([1,2], lw=4, c='tab:green')

Il y a dix couleurs distinctes:

HTML

Vous pouvez également tracer des couleurs par leur code hexadécimal HTML :

plt.plot([1,2], lw=4, c='#8f9805')

Ceci est plus similaire à la spécification et au tuple RVB plutôt qu'à une couleur nommée (à part le fait que le code hexadécimal est passé comme une chaîne), et je ne vais pas inclure une image des 16 millions de couleurs que vous pouvez choisir ...

Pour plus de détails, reportez-vous à la documentation sur les couleurs matplotlib et au fichier source spécifiant les couleurs disponibles, _color_data.py .




Related