[PYTHON] Appliquons la couleur de l'image de marque à la carte des couleurs de matplotlib!

introduction

Quelle couleur utilisez-vous pour dessiner des graphiques avec matplotlib? matplotlib a une belle palette de couleurs par défaut, Je souhaite utiliser différentes variations de couleurs pour les présentations, les matériaux et les graphiques Avez-vous déjà voulu unifier l'image couleur?

Dans cet article, l'image couleur de la marque à la palette de couleurs matplotlib Je vais contester l'adaptation!

Classe à utiliser

matplotlib a deux types de classes pour créer votre propre palette de couleurs.

  1. matplotlib.colors.ListedColormap

Créez en définissant le code de couleur qui compose la palette de couleurs avec une liste ou un tableau. Les couleurs constitutives de la palette de couleurs créée changent discrètement.

[Exemple d'utilisation]

import matplotlib as mpl
color_list = ['red', 'green', 'blue']
cmap = mpl.colors.ListedColormap(color_list)

[Carte de couleurs créée] image.png

  1. matplotlib.colors.LinearSegmentedColormap

Créez en définissant les informations RVB qui composent la palette de couleurs dans le format de données spécifié. Les couleurs constitutives de la palette de couleurs créée changent en permanence.

[Exemple d'utilisation]

import matplotlib as mpl

#########################################################################
# 
#[Réglage des couleurs constituantes]
#
#Les données des couleurs constituantes sont,
# [
#  (x_0, y_0, z_0)
#  ...
#  (x_i, y_i, z_i)
# ]
#La valeur RVB est définie de 0 à 1 dans la structure de.
#Les couleurs constitutives de la palette de couleurs sont z_0 -> y_1, z_1 -> y_2, ...Il change continuellement dans l'ordre de.
#Rouge avec les paramètres suivants-> green, green ->Cela signifie un changement de bleu.
#
#########################################################################

segment_data = {    
    'red':
        [
            (0.0,   0/255, 255/255),
            (0.5,   0/255,   0/255),
            (1.0,   0/255,   0/255),
        ],
    'green':
        [
            (0.0,   0/255,   0/255),
            (0.5, 128/255, 128/255),
            (1.0,   0/255,   0/255),
        ],
    'blue':
        [
            (0.0,   0/255,   0/255),
            (0.5,   0/255,   0/255),
            (1.0, 255/255,   0/255),
        ],
}
cmap = mpl.colors.LinearSegmentedColormap('colormap_name', segment_data)

Avec l'implémentation ci-dessus, la définition des couleurs constituantes n'est pas intuitive et un peu difficile, mais Utilisation de matplotlib.colors.LinearSegmentedColormap.from_list Il peut être créé avec une liste de codes couleur.

#Lors de la création avec liste
import matplotlib as mpl
color_list = ['red', 'green', 'blue']
cmap = mpl.colors.LinearSegmentedColormap.from_list('colormap_name', color_list)

[Carte de couleurs créée] image.png

la mise en oeuvre

Lorsque vous créez votre propre palette de couleurs, utilisez la palette de couleurs créée avec matplotlib.cm.register_cmap. Il est pratique de s'inscrire.

import matplotlib.pyplot as plt
import matplotlib as mpl

def set_custom_colormap(name: str, color_list: list):
    
    """
    color_Convertissez la liste en palette de couleurs et enregistrez-la dans matplotlib avec le nom.
Deux modèles de type discret et de type continu et quatre modèles de palette de couleurs sont enregistrés dans l'ordre inverse.
    """

    cmap_dis = mpl.colors.ListedColormap(color_list)
    cmap_seq = mpl.colors.LinearSegmentedColormap.from_list(name, color_list)
    
    plt.register_cmap(name + '_dis', cmap_dis)
    plt.register_cmap(name + '_dis_r', cmap_dis.reversed())
    plt.register_cmap(name + '_seq', cmap_seq)
    plt.register_cmap(name + '_seq_r', cmap_seq.reversed())

    return

Tout ce que vous avez à faire est de vérifier le code couleur de la couleur que vous souhaitez définir.

SENSY colormap

COLORMAP_SOURCE_DICT = {
    
    #Gradation monochromatique
    'sensy_single_1': ['#FFFFFF', '#F4458C'],
    'sensy_single_2': ['#FFFFFF', '#FF6B9A'],
    'sensy_single_3': ['#FFFFFF', '#FA8EB5'],
    'sensy_single_4': ['#FFFFFF', '#A7C0FD'],
    'sensy_single_5': ['#FFFFFF', '#5073ED'],
    'sensy_single_6': ['#FFFFFF', '#4E6FF0'],
    'sensy_single_7': ['#FFFFFF', '#4B4C80'],
    'sensy_single_8': ['#FFFFFF', '#2B2C4B'],
    
    #Gradation multicolore
    'sensy': ['#FF6B9A', '#4E6FF0'],
    'sensy_diverge': ['#FF6B9A', '#FFFFFF', '#4E6FF0'],
    'sensy_accent': ['#5073ED', '#FA8EB5', '#A7C0FD', '#2B2C4B', '#F4458C', '#4B4C80'],

}

#création de palette de couleurs&enregistrement
for name, color_list in COLORMAP_SOURCE_DICT.items():
    set_custom_colormap(name, color_list)


#Réglage initial###################

#Couleur initiale
DEFAULT_COLORMAP = 'sensy_accent_dis'

#Lors de l'utilisation de matplotlib
mpl.rcParams['image.cmap'] = DEFAULT_COLORMAP

#Lors de l'utilisation de seaborn
import seaborn as sns
sns.set()
sns.set_palette(DEFAULT_COLORMAP)

      

[Image de la carte couleur] image.png image.png

[Image d'adaptation]

Type de graphique image
graphique à barres image.png
Nuage de points image.png
contour image.png
Carte de chaleur image.png

en conclusion

Si je connaissais le code couleur que je voulais utiliser, je pourrais facilement créer ma propre palette de couleurs. Si vous pensez que les variations de couleur des graphiques que vous utilisez normalement ne sont pas satisfaisantes ou incohérentes, Il peut être amusant de créer vous-même une belle palette de couleurs.

référence

Recommended Posts

Appliquons la couleur de l'image de marque à la carte des couleurs de matplotlib!
Lorsque vous passez la souris sur Matplotlib, l'image correspondante s'affiche.
Point selon l'image
La route pour télécharger Matplotlib
Coupons le visage de l'image
Je veux changer la couleur en cliquant sur le point de dispersion dans matplotlib
Activons la caméra et appliquons la mosaïque au visage humain (OpenCV)
Spécifiez la couleur dans la carte 2D matplotlib
Appliquer la formule de propagation d'erreur à l'erreur standard
Définissez la couleur des xticklabels individuellement avec matplotlib
Alignez la barre de couleurs sur la figure avec matplotlib
Comment attribuer plusieurs valeurs à la barre de couleurs Matplotlib
Comment calculer la volatilité d'une marque
Essayez d'ajouter la distorsion de l'objectif fisheye à l'image
Introduction à Python Préparons l'environnement de développement
Coupez l'image aux coins arrondis avec pythonista
J'ai essayé de corriger la forme trapézoïdale de l'image
Appliquer la syntaxe / réponse de base de l'extraction de Pandas à matplotlib
Cours ROS 119 Corriger la couleur de l'image de la caméra