Matplotlib'de adlandırılmış renkler


259

Matplotlib'de parsellerde kullanmak için hangi adlandırılmış renkler mevcuttur? Matplotlib belgelerinde bunların sadece isimler olduğunu iddia eden bir liste bulabilirsiniz:

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

Ancak, bu renklerin de en azından bu bağlamda kullanılabileceğini buldum:

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

ancak bunlar yukarıdaki listede yer almıyor. Herkes mevcut adlandırılmış renklerin kapsamlı bir listesini biliyor mu?


4
Temel olarak, hepsi HTML renk adlarından biridir, böylece birkaç güzel grafik istiyorsanız her zaman google "HTML renkleri" ni kullanabilirsiniz. @ BoshWash'ın aşağıdaki mükemmel cevabı size tam listeyi verir.
Joe Kington

14

Bu güzel bir resim, muhtemelen bunu fark etmiş olmalıydım. Adil olmak gerekirse, bu soruyu göndermeden önce bir ay gönderildi ve eminim bu sorunun cevabını bulmak için dokümanlar arasında daha önce birçok kez arama yaptım.
TC Proctor

Yanıtlar:


303

Kullanmak istediğim renklerin isimlerini sürekli unutuyorum ve bu soruya dönmeye devam ediyorum =)

Önceki cevaplar harika, ancak yayınlanan görüntüdeki mevcut renklere genel bir bakış elde etmek biraz zor. Renklerin benzer renklerle gruplandırılmasını tercih ediyorum, bu yüzden sütunlarda sıralanan bir renk listesi almak için yukarıdaki yorumda belirtilen matplotlib cevabını hafifçe ayarladım . Sipariş, gözle nasıl sıralayacağımla aynı değil, ama bence iyi bir genel bakış sunuyor.

Bu cevabı ilk olarak gönderdiğimden beri 'rebeccapurple'ın eklendiğini ve üç adaçayı' xkcd: 'önekinin altına taşındığını yansıtacak şekilde resmi ve kodu güncelledim.

resim açıklamasını buraya girin

Matplotlib örneğinden çok fazla değişiklik yapmadım, ama işte tamlık kodu.

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

Ek adlandırılmış renkler

2017-10-25 güncellendi. Önceki güncellemelerimi bu bölümle birleştirdim.

xkcd

Matplotlib ile çizim yaparken adlandırılmış ek renkler kullanmak isterseniz , 'xkcd:' önekini kullanarak xkcd kitle kaynaklı renk adlarını kullanabilirsiniz :

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

Artık adlandırılmış renklerin bir çoğuna erişebilirsiniz!

resim açıklamasını buraya girin

tablo

Varsayılan Tableau renkleri matplotlib'de 'tab:' öneki ile kullanılabilir:

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

On farklı renk vardır:

resim açıklamasını buraya girin

HTML

Renkleri HTML onaltılık kodlarına göre de çizebilirsiniz :

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

Bu adlandırılmış bir renk yerine belirleme ve RGB tuple daha benzer (hex kodu bir dize olarak geçirilmesi gerçeği dışında) ve ben aralarından seçim yapabileceğiniz 16 milyon renk bir görüntü dahil olmayacak ...


Daha fazla ayrıntı için lütfen matplotlib renk belgelerine ve kullanılabilir renkleri belirten kaynak dosyaya bakın _color_data.py.



Arsa için teşekkürler! Meraktan, 'y' gerçekten 'sarı'dan farklı mı? İlk arsa onları farklı renklere sahip.
ComputerScientist

1
@ComputerScientist Evet, bu Github konusuna ve bağlantılı posta listesi tartışmasına göre, tek harf renklerine Matlab muadillerine göre RBG değerleri atanırken tam ad HTML renklerine karşılık geliyor. Matlab tek harfli renkler şu anda HTML standardını da takip ediyor, bu yüzden bunun yeni bir Matlab değişikliği olup olmadığından veya matplotlib tek harfli renklerin görüşmelerde de belirtildiği gibi görünürlük gibi nedenlerle ayarlanıp ayarlanmadığından emin değilim.
joelostblom

@AdrianTorrie: Ek bir 'Teşekkürler' olarak seçtiğiniz bir ödül verebilirsiniz! Ödül ödülü bu cevabı öne çıkarır ve cevaplayana ek puanlar verir.
SherylHohman

Bunu güncel tuttuğunuz için teşekkür ederiz!
JakeCowton

@joelostblom, xkcd renklerinin çiziminde, onaltılık kodları renk adının yanında (siyah) gri renkte nasıl gösterdiniz?
MMelnicki

312

Matplotlib, colors.py modülünden bir sözlük kullanır.

İsimleri yazdırmak için şunu kullanın:

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

Bu tam sözlük:

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

Onları şu şekilde çizebilirsiniz:

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

1
Cevabınız için teşekkürler, tam da aradığım şey buydu. Sanırım @Joe Kington'un yorumu ile birlikte, hemen hemen tüm üsler kaplıdır.
TC Proctor

Burada RGB değerlerini de bulabilirsiniz: flask.sagenb.org/src/plot/colors.py
pceccon

Çevrimiçi olarak adlandırılan renklerin görsel listesine hızlı bir şekilde bakmak istiyorsanız: matplotlib.org/examples/color/named_colors.html
BallpointBen


10

Grafiklerde kullanılacak renklerin tam listesini almak için:

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

Böylece, bu şekilde hızlı bir şekilde kullanabilirsiniz:

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

Bu, önceki cevapların sahip olmadığı hiçbir şeyi eklemez.
TC Proctor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.