it-swarm.com.de

Benannte Farben in Matplotlib

Welche benannten Farben sind in matplotlib für die Verwendung in Plots verfügbar? Ich kann eine Liste in der matplotlib-Dokumentation finden, die besagt, dass dies die einzigen Namen sind:

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

Ich habe jedoch festgestellt, dass diese Farben auch verwendet werden können, zumindest in diesem Zusammenhang:

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

aber diese sind nicht auf der obigen Liste. Kennt jemand eine vollständige Liste der genannten Farben, die verfügbar sind?

232
T.C. Proctor

Ich vergesse ständig die Namen der Farben, die ich verwenden möchte und komme immer wieder auf diese Frage zurück =)

Die vorherigen Antworten sind großartig, aber ich finde es etwas schwierig, einen Überblick über die verfügbaren Farben aus dem geposteten Bild zu erhalten. Ich bevorzuge es, die Farben mit ähnlichen Farben zu gruppieren, also habe ich die Matplotlib-Antwort , die in einem Kommentar oben erwähnt wurde, leicht angepasst, um eine spaltenweise sortierte Farbliste zu erhalten. Die Reihenfolge ist nicht identisch mit der Sortierung nach Augenmaß, aber ich denke, es gibt einen guten Überblick.

Ich habe das Bild und den Code aktualisiert, um anzuzeigen, dass 'rebeccapurple' hinzugefügt wurde und die drei Salbei-Farben unter das Präfix 'xkcd:' verschoben wurden, seit ich diese Antwort ursprünglich gepostet habe.

enter image description here

Ich habe wirklich nicht viel am matplotlib-Beispiel geändert, aber hier ist der Code zur Vollständigkeit.

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

Weitere benannte Farben

Aktualisiert am 25.10.2017. Ich habe meine vorherigen Updates in diesem Abschnitt zusammengeführt.

xkcd

Wenn Sie beim Plotten mit matplotlib zusätzliche benannte Farben verwenden möchten, können Sie die xkcd-Crowdsourcing-Farbnamen über das Präfix 'xkcd:' verwenden:

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

Jetzt haben Sie Zugriff auf eine Vielzahl benannter Farben!

enter image description here

Tableau

Die standardmäßigen Tableau-Farben sind in matplotlib über das Präfix 'tab:' verfügbar:

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

Es gibt zehn verschiedene Farben:

enter image description here

HTML

Sie können Farben auch anhand ihres HTML-Hex-Codes zeichnen:

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

Dies ähnelt eher der Angabe eines RGB-Tupels als einer benannten Farbe (abgesehen von der Tatsache, dass der Hex-Code als Zeichenfolge übergeben wird), und ich werde kein Bild der 16 Millionen Farben einfügen, aus denen Sie auswählen können ...


Weitere Informationen finden Sie in der Matplotlib-Farbdokumentation und in der Quelldatei mit den verfügbaren Farben _color_data.py .


247
joelostblom

Matplotlib verwendet ein Wörterbuch aus seinem Modul colors.py.

Um die Namen auszudrucken, verwenden Sie:

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

Dies ist das vollständige Wörterbuch:

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

Sie könnten sie so zeichnen:

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

Zusätzlich zu BoshWashs Antwort ist hier das Bild, das von seinem Code generiert wurde:

Named colors

144
Mathias711

So rufen Sie eine vollständige Liste der Farben ab, die in Plots verwendet werden sollen:

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

So können Sie auf diese Weise schnell verwenden:

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])
5
jnfran92