Germain Salvato Vallverdu
HTML color codes are another way to define a RGB color using an hexadecimal numeral system.
example : #2D85C9
(48, 133, 201)
alpha
(canal alpha)plot_cmap("Dark2", 4)
plot_cmap("Blues", 8)
Dans matplotlib le suffixe _r
permet d'inverser
le sens.
plot_cmap("Blues_r", 8)
plot_cmap("coolwarm", 9)
matplotlib.cm
summer
plot_cmap(plt.cm.summer, 6)
La colormap
retourne une couleur de type rgba
.
plt.cm.summer(X=42)
(0.16470588235294117, 0.58235294117647063, 0.40000000000000002, 1.0)
plt.cm.colormap.N
print("Max val = ", plt.cm.summer.N)
palette = plt.cm.summer(X=[1, 50, 100, 200], alpha=.6)
print(palette)
show_colors(palette)
Max val = 256 [[ 0.00392157 0.50196078 0.4 0.6 ] [ 0.19607843 0.59803922 0.4 0.6 ] [ 0.39215686 0.69607843 0.4 0.6 ] [ 0.78431373 0.89215686 0.4 0.6 ]]
Normalize
normalize = mpl.colors.Normalize(vmin=-5, vmax=5)
palette = plt.cm.summer(X=normalize([-4, -2, 0, 2, 4]), alpha=1)
print(palette)
show_colors(palette)
[[ 0.09803922 0.54901961 0.4 1. ] [ 0.29803922 0.64901961 0.4 1. ] [ 0.50196078 0.75098039 0.4 1. ] [ 0.70196078 0.85098039 0.4 1. ] [ 0.90196078 0.95098039 0.4 1. ]]
Colorlover met à disposition des fonctions pour gérer une palette de couleurs
import colorlover as cl
cl.colorsys
: conversion entre systèmes de couleurcl.scales
: les échelles de couleurcl.to_HTML
: affichage du échelle de couleurIl faut utiliser cl.scales
de la façon suivante :
cl.scales["nombre"]["type"]["nom"]
nombre
est un nombre entier 3 et 12 inclustype
est le type de palette : div
,
seq
ou qual
nom
est le nom de la palette.Toute les palettes ne sont pas disponnibles pour toutes les combinaisons.
Par exemple, voici les palettes divergentes à 4 couleurs.
On utilise cl.to_html
pour convertir en langage html,
et HTML pour demander au notebook d'afficher le résultat du code
HTML et voir la palette.
from IPython.display import HTML # notebook integration
HTML(cl.to_html(cl.scales["4"]["div"]))
On affiche maintenant les couleurs de la palette PuOr
:
cl.scales["4"]["div"]["PuOr"]
['rgb(230,97,1)', 'rgb(253,184,99)', 'rgb(178,171,210)', 'rgb(94,60,153)']
Pour les utiliser avec matplotlib il faut les convertir en triplet RGB.
Une fonction est prévu pour cela dans colorlover.
cl.to_numeric(cl.scales["4"]["div"]["PuOr"])
[(230.0, 97.0, 1.0), (253.0, 184.0, 99.0), (178.0, 171.0, 210.0), ( 94.0, 60.0, 153.0)]
La documentation est très claire : seaborn color palettes
import seaborn as sns
seaborn met à disposition plusieurs fonctions pour construire et afficher une palette de couleurs. Par exemple, pour afficher la palette courante :
current_palette = sns.color_palette()
sns.palplot(current_palette)
Il existe plusieurs fonctions pour construire sa propre palette.
sns.palplot(sns.color_palette("husl", 8))
sns.palplot(sns.light_palette("violet", 4))
sns.palplot(sns.diverging_palette(220, 20, n=5))
The data vs ink ratio must be more than 1