¿Qué colores con nombre están disponibles en matplotlib para usar en gráficos? 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:
pero estos no están en la lista anterior. ¿Alguien sabe una lista exhaustiva de los colores con nombre que están disponibles?
Básicamente, son todos los nombres de colores HTML, por lo que siempre puede buscar en Google “colores HTML” si desea varios gráficos agradables. Sin embargo, la excelente respuesta de @BoshWash a continuación le brinda la lista exacta.
Esa es una buena foto, probablemente debería haberla notado. Para ser justos, se publicó por primera vez un mes antes de publicar esta pregunta, y estoy bastante seguro de que busqué en los documentos muchas veces antes de la respuesta a esta pregunta.
– Supervisor de TC
5 de febrero de 2016 a las 14:51
joseblom
Constantemente olvido los nombres de los colores que quiero usar y sigo volviendo a esta pregunta =)
Las respuestas anteriores son excelentes, pero me resulta un poco difícil obtener una descripción general de los colores disponibles en la imagen publicada. Prefiero que los colores se agrupen con colores similares, así que modifiqué ligeramente el matplotlib respuesta eso se mencionó en un comentario anterior para obtener una lista de colores ordenada en columnas. El orden no es idéntico a cómo lo ordenaría a simple vista, pero creo que da una buena visión general.
Actualicé la imagen y el código para reflejar que se agregó ‘rebeccapurple’ y los tres colores salvia se movieron bajo el prefijo ‘xkcd:’ desde que publiqué esta respuesta originalmente.
Realmente no cambié mucho del ejemplo de matplotlib, pero aquí está el código para completarlo.
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()
Colores con nombre adicionales
Actualizado 2017-10-25. Fusioné mis actualizaciones anteriores en esta sección.
Esto es más similar a especificar una 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 entre los que puede elegir…
¡Gracias por la trama! Por curiosidad, ¿’y’ es realmente diferente de ‘amarillo’? La primera trama los tiene de diferentes colores.
– Científico de la computación
26 de julio de 2016 a las 14:01
@ComputerScientist Sí, según este problema de Github y la discusión de la lista de correo vinculada, a los colores de una sola letra se les asignaron valores RBG en función de su contraparte de Matlab, mientras que el nombre completo corresponde a los colores HTML. Los colores de una sola letra de Matlab actualmente también siguen el estándar HTML, por lo que no estoy seguro de si se trata de un cambio reciente de Matlab o si los colores de una sola letra de matplotlib se modificaron/seleccionaron por razones como la visibilidad, que también se mencionó en las discusiones.
– joelostblom
1 de agosto de 2016 a las 23:12
@AdrianTorrie: ¡podría otorgar una recompensa de su propia elección como un ‘Gracias’ adicional! Un premio de recompensa resalta mucho esta respuesta y otorga puntos adicionales al que responde.
– SherylHohman
18/06/2017 a las 22:35
¡Gracias por mantener esto actualizado!
– Jake Cowton
11 de septiembre de 2017 a las 14:16
@joelostblom, en la trama de los colores xkcd, ¿cómo consiguió que los códigos hexadecimales se mostraran en gris, junto al nombre del color (en negro)?
– MMelnicki
25 de abril de 2019 a las 18:24
BoshWash
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)
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()
Gracias por la respuesta, eso era exactamente lo que estaba buscando. Creo que en combinación con el comentario de @Joe Kington, casi todas las bases están cubiertas.
Puede usar este diccionario que tiene la mayoría de los colores. z = { ‘Negro’: (0,0,0), ‘Blanco’: (255,255,255), ‘Rojo’: (255,0,0), ‘Lima’: (0,255,0), ‘Azul’: ( 0,0,255), ‘Amarillo’: (255,255,0), ‘Cian’: (0,255,255), ‘Fucsia’: (255,0,255), ‘Plata’: (192,192,192), ‘Gris’: (128,128,128), ‘ Maroon’ : (128,0,0), ‘Olive’ : (128,128,0), ‘Green’ : (0,128,0), ‘Purple’: (128,0,128), ‘Teal’ : (0,128,128), ‘ Armada’ : (0,0,128) }
Bienvenido a Stack Overflow. El código es mucho más útil cuando va acompañado de una explicación. Stack Overflow se trata de aprender, no de proporcionar fragmentos para copiar y pegar a ciegas. Edite su pregunta y explique cómo responde a la pregunta específica que se le hace. Consulte Cómo responder.
– Chris
13 de marzo a las 23:21
Bienvenido a Stack Overflow. El código es mucho más útil cuando va acompañado de una explicación. Stack Overflow se trata de aprender, no de proporcionar fragmentos para copiar y pegar a ciegas. Edite su pregunta y explique cómo responde a la pregunta específica que se le hace. Consulte Cómo responder.
– Chris
13 de marzo a las 23:21
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
Básicamente, son todos los nombres de colores HTML, por lo que siempre puede buscar en Google “colores HTML” si desea varios gráficos agradables. Sin embargo, la excelente respuesta de @BoshWash a continuación le brinda la lista exacta.
–Joe Kington
14/03/2014 a las 15:26
También hay esta bonita foto en matplotlib.org
– usuario2379410
9 mayo 2015 a las 10:41
Esa es una buena foto, probablemente debería haberla notado. Para ser justos, se publicó por primera vez un mes antes de publicar esta pregunta, y estoy bastante seguro de que busqué en los documentos muchas veces antes de la respuesta a esta pregunta.
– Supervisor de TC
5 de febrero de 2016 a las 14:51