pyplot examples color python matplotlib colors

python - examples - Colores con nombre en matplotlib



plt python color (4)

¿Qué colores con nombre están disponibles en matplotlib para su uso en parcelas? Puedo encontrar una lista en la documentación de matplotlib que afirma que estos son los únicos nombres:

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

Sin embargo, descubrí que estos colores también se pueden usar, al menos en este contexto:

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

pero estos no están en la lista anterior. ¿Alguien sabe una lista exhaustiva de los colores con nombre que están disponibles?


Además de la respuesta de BoshWash, aquí está la imagen generada por su código:


Matplotlib usa un diccionario de su módulo colors.py.

Para imprimir los nombres use:

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

Este es el diccionario completo:

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

Podrías trazarlos así:

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


Me olvido constantemente de los nombres de los colores que quiero usar y sigo volviendo a esta pregunta =)

Las respuestas anteriores son geniales, pero me resulta un poco difícil obtener una visión general de los colores disponibles de la imagen publicada. Prefiero que los colores se agrupen con colores similares, por lo que modifiqué ligeramente la respuesta matplotlib que se mencionó en un comentario anterior para obtener una lista de colores ordenados en columnas. El orden no es idéntico a cómo ordenaría por ojo, pero creo que da una buena visión general.

Actualicé la imagen y el código para reflejar que ''rebeccapurple'' se ha agregado y los tres colores sabios se han movido bajo el prefijo ''xkcd:'' desde que publiqué esta respuesta originalmente.

Realmente no cambié mucho del ejemplo de matplotlib, pero aquí está el código de compleción.

""" Visualization of named colors. Simple plot example with the named colors and its visual representation. """ from __future__ import (absolute_import, division, print_function, unicode_literals) import six import numpy as np import matplotlib.pyplot as plt from matplotlib import colors # Reverse this if condition to print only the xkcd and tableau colors colors_ = [color for color in list(six.iteritems(colors.cnames)) if not '':'' in color] # Add the single letter colors. for name, rgb in six.iteritems(colors.ColorConverter.colors): if len(name) == 1: hex_ = colors.rgb2hex(rgb) colors_.append((name, hex_)) # Transform to hex color values. hex_ = [color[1] for color in colors_] # Get the rgb equivalent. rgb = [colors.hex2color(color) for color in hex_] # Get the hsv equivalent. hsv = [colors.rgb_to_hsv(color) for color in rgb] # Split the hsv values to sort. hue = [color[0] for color in hsv] sat = [color[1] for color in hsv] val = [color[2] for color in hsv] # Sort by hue, saturation and value. ind = np.lexsort((val, sat, hue)) sorted_colors = [colors_[i] for i in ind] n = len(sorted_colors) ncols = 4 nrows = int(np.ceil(1. * n / ncols)) fig, ax = plt.subplots(1, figsize=(16,16)) X, Y = fig.get_dpi() * fig.get_size_inches() # row height h = Y / (nrows + 1) # col width w = X / ncols for i, (name, color) in enumerate(sorted_colors): col = int(i / nrows) row = i % nrows y = Y - (row * h) - h xi_line = w * (col + 0.05) xf_line = w * (col + 0.3) xi_text = w * (col + 0.35) ax.text(xi_text, y, name, fontsize=(h * 0.47), horizontalalignment=''left'', verticalalignment=''center'') # Add extra white line between colors ax.hlines(y + h * 0.1, xi_line, xf_line, color=color, linewidth=(h * 0.6)) 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()

Colores con nombre adicional

Actualizado 2017-10-25. Combiné mis actualizaciones anteriores en esta sección.

xkcd

Si desea utilizar colores con nombre adicionales al trazar con matplotlib, puede utilizar los nombres de color crowdsourcing xkcd , a través del prefijo ''xkcd:'':

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

¡Ahora tiene acceso a una plétora de colores con nombre!

Cuadro

Los colores predeterminados de Tableau están disponibles en matplotlib a través del prefijo ''tab:'':

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

Hay diez colores distintos:

HTML

También puede trazar colores por su código hexadecimal HTML :

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

Esto es más similar a la especificación y la tupla RGB en lugar de un color con nombre (aparte del hecho de que el código hexadecimal se pasa como una cadena), y no incluiré una imagen de los 16 millones de colores que puede elegir ...

Para obtener más información, consulte la documentación de matplotlib colors y el archivo de origen que especifica los colores disponibles, _color_data.py .


Para obtener una lista completa de los colores para usar en las parcelas:

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

Entonces, puedes usar de esa manera rápidamente:

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