Matplotlib में नामित रंग


259

भूखंडों में उपयोग के लिए नामांकित रंग क्या हैं? मैं 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')

लेकिन ये उपरोक्त सूची में नहीं हैं। किसी को भी उपलब्ध रंगों की एक विस्तृत सूची पता है?


4
मूल रूप से, यह सभी HTML रंग नामों में से एक है, इसलिए यदि आप कई अच्छे चार्ट चाहते हैं, तो आप हमेशा Google "HTML रंग" को ही ले सकते हैं। @ नीचे BoshWash का उत्कृष्ट उत्तर आपको सटीक सूची देता है, हालाँकि।
जो किंगटन

14
वहाँ भी इस अच्छी तस्वीर है matplotlib.org

यह एक अच्छी तस्वीर है, मुझे शायद इस पर ध्यान देना चाहिए था। निष्पक्ष होने के लिए, इस प्रश्न को पोस्ट करने से पहले इसे एक महीने पहले पोस्ट किया गया था, और मुझे पूरा यकीन है कि मैंने इस प्रश्न के उत्तर के लिए पहले कई बार डॉक्स के माध्यम से खोजा था।
टीसी प्रॉक्टर

जवाबों:


303

मैं लगातार उन रंगों के नाम भूल जाता हूं जिनका मैं उपयोग करना चाहता हूं और इस सवाल पर वापस आना चाहता हूं =)

पिछले उत्तर बहुत अच्छे हैं, लेकिन मुझे पोस्ट की गई छवि से उपलब्ध रंगों का अवलोकन प्राप्त करना थोड़ा मुश्किल है। मैं रंगों को समान रंगों के साथ समूहीकृत करना पसंद करता हूं, इसलिए मैंने matplotlib के उत्तर को थोड़ा बदल दिया , जिसका उल्लेख ऊपर एक टिप्पणी में किया गया था ताकि कॉलम में छपी एक रंग सूची प्राप्त की जा सके। यह आदेश समान नहीं है कि मैं कैसे आंख से छाँटूँगा, लेकिन मुझे लगता है कि यह एक अच्छा अवलोकन देता है।

मैंने छवि और कोड को प्रतिबिंबित करने के लिए अद्यतन किया कि 'रिबेकापुरपेल' को जोड़ा गया है और तीन ऋषि रंगों को '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 क्राउडसोर्स्ड कलर नामों का उपयोग कर सकते हैं :

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

अब आपके पास नामित रंगों के ढेरों तक पहुंच है!

यहां छवि विवरण दर्ज करें

चित्रमय तसवीर

डिफ़ॉल्ट झांकी के रंग 'टैब:' उपसर्ग के माध्यम से matplotlib में उपलब्ध हैं:

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

दस अलग-अलग रंग हैं:

यहां छवि विवरण दर्ज करें

एचटीएमएल

आप उनके HTML हेक्स कोड द्वारा रंग भी प्लॉट कर सकते हैं :

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

यह निर्दिष्ट रंग के बजाय आरजीबी ट्यूपल को निर्दिष्ट करने के समान है (इस तथ्य के अलावा कि हेक्स कोड को एक स्ट्रिंग के रूप में पारित किया गया है), और मैं उन 16 मिलियन रंगों की छवि शामिल नहीं करूंगा जिनसे आप चुन सकते हैं ...


अधिक जानकारी के लिए, कृपया matplotlib रंग प्रलेखन और उपलब्ध रंगों को निर्दिष्ट करने वाली स्रोत फ़ाइल देखें _color_data.py



साजिश के लिए धन्यवाद! जिज्ञासा से बाहर, 'वाई' वास्तव में 'पीले' से अलग है? पहले प्लॉट में उनके अलग-अलग रंग हैं।
कम्प्यूटर

1
@ComputerScientist हाँ, इस गितूब मुद्दे और लिंक की गई सूची पर चर्चा के अनुसार, एकल अक्षर रंगों को उनके मैटलैब समकक्ष के आधार पर आरबीजी मान सौंपा गया, जबकि पूरा नाम HTML रंगों के अनुरूप है। Matlab एकल अक्षर रंग वर्तमान में HTML मानक का भी अनुसरण करता है, इसलिए मुझे यकीन नहीं है कि हाल ही में Matlab परिवर्तन है या यदि matplotlib एकल पत्र रंगों को दृश्यता जैसे कारणों के लिए चुना / चुना गया था, जिसका चर्चा में भी उल्लेख किया गया था।
joelostblom

@ AdrianTorrie: आप एक अतिरिक्त 'थैंक्स' के रूप में अपने खुद के चयन का एक पुरस्कार दे सकते हैं! एक इनाम पुरस्कार इस जवाब पर प्रकाश डालता है, और उत्तर देने वाले को अतिरिक्त अंक देता है।
शेरलहोमन

अप टू डेट रखने के लिए धन्यवाद!
रॉकजेक28

@joelostblom, xkcd रंगों के कथानक में, आपको हेक्स कोड ग्रे में प्रदर्शित करने के लिए कैसे मिला, रंग नाम के बगल में (काले रंग में)?
एमएमएलनिकी

312

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

1
उत्तर के लिए धन्यवाद, वही मैं देख रहा था। मुझे लगता है कि @Joe Kington की टिप्पणी के साथ संयोजन में, बहुत सारे आधार शामिल हैं।
टीसी प्रॉक्टर

यहां आप RGB मान भी पा सकते हैं: flask.sagenb.org/src/plot/colors.py
pceccon

यदि आप नामांकित रंगों की विज़ुअल सूची को ऑनलाइन देखना चाहते हैं: matplotlib.org/examples/color/onym_colors.html
BallpointBen

145

बोशवॉश के जवाब के अलावा, यहां उनके कोड द्वारा बनाई गई तस्वीर है:

नाम दिया रंग


10

भूखंडों में उपयोग करने के लिए रंगों की पूरी सूची प्राप्त करने के लिए:

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

इसमें ऐसा कुछ भी नहीं है जो पिछले उत्तरों में नहीं है।
टीसी प्रॉक्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.