Benoemde kleuren in matplotlib

Welke benoemde kleuren zijn beschikbaar in matplotlib voor gebruik in plots? Ik kan een lijst vinden in de matplotlib-documentatie die beweert dat dit de enige namen zijn:

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

Ik heb echter ontdekt dat deze kleuren ook kunnen worden gebruikt, althans in deze context:

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

maar deze staan niet in de bovenstaande lijst. Weet iemand een uitputtende lijst van de genoemde kleuren die beschikbaar zijn?


Antwoord 1, autoriteit 100%

Ik vergeet constant de namen van de kleuren die ik wil gebruiken en kom steeds terug op deze vraag =)

De eerdere antwoorden zijn geweldig, maar ik vind het een beetje moeilijk om een overzicht te krijgen van de beschikbare kleuren van de geplaatste afbeelding. Ik geef er de voorkeur aan dat de kleuren worden gegroepeerd met vergelijkbare kleuren, dus ik heb het matplotlib-antwoordenigszins aangepast werd genoemd in een opmerking hierboven om een kleurenlijst gesorteerd in kolommen te krijgen. De volgorde is niet identiek aan hoe ik op het oog zou sorteren, maar ik denk dat het een goed overzicht geeft.

Ik heb de afbeelding en code bijgewerkt om aan te geven dat ‘rebeccapurple’ is toegevoegd en dat de drie saliekleuren zijn verplaatst onder het voorvoegsel ‘xkcd:’ sinds ik dit antwoord oorspronkelijk heb gepost.

Ik heb niet veel veranderd aan het voorbeeld van matplotlib, maar hier is de code voor de volledigheid.

import matplotlib.pyplot as plt
from matplotlib import colors as mcolors
colors = dict(mcolors.BASE_COLORS, **mcolors.CSS4_COLORS)
# Sort colors by hue, saturation, value and name.
by_hsv = sorted((tuple(mcolors.rgb_to_hsv(mcolors.to_rgba(color)[:3])), name)
                for name, color in colors.items())
sorted_names = [name for hsv, name in by_hsv]
n = len(sorted_names)
ncols = 4
nrows = n // ncols
fig, ax = plt.subplots(figsize=(12, 10))
# Get height and width
X, Y = fig.get_dpi() * fig.get_size_inches()
h = Y / (nrows + 1)
w = X / ncols
for i, name in enumerate(sorted_names):
    row = i % nrows
    col = i // nrows
    y = Y - (row * h) - h
    xi_line = w * (col + 0.05)
    xf_line = w * (col + 0.25)
    xi_text = w * (col + 0.3)
    ax.text(xi_text, y, name, fontsize=(h * 0.8),
            horizontalalignment='left',
            verticalalignment='center')
    ax.hlines(y + h * 0.1, xi_line, xf_line,
              color=colors[name], linewidth=(h * 0.8))
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()

Aanvullende kleuren

Bijgewerkt 2017-10-25. Ik fuseerde mijn vorige updates in deze sectie.

XKCD

Als u extra genoemde kleuren wilt gebruiken bij het plotten met matplotlib, kunt u de XKCD Crowdsourced Color Names , via het voorvoegsel ‘XKCD:’

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

Nu heb je toegang tot een overvloed aan genoemde kleuren!

tableau

De standaard Tableau-kleuren zijn verkrijgbaar in Matplotlib via het tabblad ‘Prefix:

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

Er zijn tien verschillende kleuren:

HTML

U kunt ook kleuren plotten door hun HTML HEX-code :

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

Dit is meer vergelijkbaar met het specificeren en RGB-tuple in plaats van een genoemde kleur (afgezien van het feit dat de zeskantcode wordt doorgegeven als een tekenreeks), en ik zal geen beeld opnemen van de 16 miljoen kleuren waaruit u kunt kiezen. ..


Raadpleeg de Documentatie van Matplotlib en het bronbestand opgeven kleuren, _color_data.py.



Antwoord 2, Autoriteit 88%

Matplotlib gebruikt een woordenboek uit zijn kleuren.py-module.

Om het gebruik van de namen af ​​te drukken:

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

Dit is de volledige woordenboek:

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

je zou ze zo kunnen plotten:

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

Antwoord 3, autoriteit 39%

Naast het antwoord van BoshWash, is hier de afbeelding die door zijn code is gegenereerd:


Antwoord 4, autoriteit 5%

Voor een volledige lijst van kleuren die in plots kunnen worden gebruikt:

import matplotlib.colors as colors
colors_list = list(colors._colors_full_map.values())

Dus je kunt op die manier snel het volgende gebruiken:

scatter(X,Y, color=colors_list[0])
scatter(X,Y, color=colors_list[1])
scatter(X,Y, color=colors_list[2])
...
scatter(X,Y, color=colors_list[-1])

Other episodes