[python] matplotlib의 명명 된 색상

플롯에 사용하기 위해 matplotlib에서 사용할 수있는 명명 된 색상은 무엇입니까? matplotlib 문서에서 이것이 유일한 이름이라고 주장하는 목록을 찾을 수 있습니다.

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

그러나 적어도이 맥락에서 이러한 색상을 사용할 수도 있다는 것을 알았습니다.

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

그러나 이들은 위의 목록에 없습니다. 누구나 사용할 수있는 명명 된 색상의 철저한 목록을 알고 있습니까?



답변

나는 사용하고 싶은 색상의 이름을 끊임없이 잊어 버리고이 질문으로 계속 돌아옵니다 =)

이전 답변은 훌륭하지만 게시 된 이미지에서 사용 가능한 색상에 대한 개요를 얻는 것이 약간 어렵다는 것을 알았습니다. 색상을 비슷한 색상으로 그룹화하는 것을 선호하므로 위의 주석에서 언급 된 matplotlib 답변 을 약간 조정하여 색상 목록을 열로 정렬했습니다. 순서는 눈으로 정렬하는 방법과 동일하지 않지만 좋은 개요를 제공한다고 생각합니다.

나는이 답변을 원래 게시 한 이래로 ‘rebeccapurple’이 추가되었고 세 개의 현자 색상이 ‘xkcd :’접두사 아래로 이동되었음을 반영하기 위해 이미지와 코드를 업데이트했습니다.

여기에 이미지 설명을 입력하십시오

matplotlib 예제에서 많이 변경하지는 않았지만 다음은 완전성에 대한 코드입니다.

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

추가 명명 된 색상

2017-10-25로 업데이트되었습니다. 이전 업데이트를이 섹션에 병합했습니다.

xkcd

matplotlib로 플로팅 할 때 추가 명명 된 색상을 사용 하려면 ‘xkcd :’접두사를 통해 xkcd crowdsourced 색상 이름을 사용할 수 있습니다 .

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

이제 다양한 이름의 색상에 액세스 할 수 있습니다!

여기에 이미지 설명을 입력하십시오

Tableau

기본 Tableau 색상은 matplotlib에서 ‘tab :’접두사를 통해 사용할 수 있습니다.

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

10 가지 뚜렷한 색상이 있습니다 :

여기에 이미지 설명을 입력하십시오

HTML

HTML 16 진수 코드로 색상을 플롯 할 수도 있습니다 .

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

이것은 16 진수 코드가 문자열로 전달된다는 사실 외에도 이름이 지정된 색상이 아니라 RGB 튜플을 지정하는 것과 더 유사하며 선택할 수있는 1600 만 색상의 이미지는 포함하지 않습니다 …


자세한 내용 은 matplotlib 색상 설명서 및 사용 가능한 색상을 지정하는 소스 파일을 참조하십시오 _color_data.py.



답변

Matplotlib는 colors.py 모듈의 사전을 사용합니다.

이름을 인쇄하려면 다음을 사용하십시오.

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

이것은 완전한 사전입니다.

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

다음과 같이 구성 할 수 있습니다.

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


답변

BoshWash의 답변 외에도 다음은 그의 코드로 생성 된 그림입니다.

명명 된 색상


답변

플롯에 사용할 전체 색상 목록을 얻으려면 :

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

따라서 다음과 같이 빠르게 사용할 수 있습니다.

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


답변