[PYTHON] Wenden wir die Markenbildfarbe auf die Farbkarte von matplotlib an!

Einführung

Welche Farbe verwenden Sie beim Zeichnen von Grafiken mit matplotlib? matplotlib wird standardmäßig mit einer schönen Farbkarte geliefert. Ich möchte verschiedene Farbvarianten für Präsentationen, Materialien und Grafiken verwenden Wollten Sie schon immer das Farbbild vereinheitlichen?

In diesem Artikel wird das Markenfarbbild auf die Matplotlib-Farbkarte übertragen Ich werde die Anpassung herausfordern!

Klasse zu verwenden

matplotlib verfügt über zwei Arten von Klassen zum Erstellen Ihrer eigenen Farbkarte.

  1. matplotlib.colors.ListedColormap

Erstellen Sie, indem Sie den Farbcode festlegen, aus dem die Farbkarte mit Liste oder Array besteht. Die Grundfarben der erstellten Farbkarte ändern sich diskret.

[Anwendungsbeispiel]

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

[Farbkarte erstellt] image.png

  1. matplotlib.colors.LinearSegmentedColormap

Erstellen Sie, indem Sie die RGB-Informationen, aus denen die Farbkarte besteht, im angegebenen Datenformat festlegen. Die Grundfarben der erstellten Farbkarte ändern sich kontinuierlich.

[Anwendungsbeispiel]

import matplotlib as mpl

#########################################################################
# 
#[Einstellung der Grundfarben]
#
#Die Daten der konstituierenden Farben sind,
# [
#  (x_0, y_0, z_0)
#  ...
#  (x_i, y_i, z_i)
# ]
#Der RGB-Wert wird in der Struktur von von 0 auf 1 gesetzt.
#Die Grundfarben der Farbkarte sind z_0 -> y_1, z_1 -> y_2, ...Es ändert sich kontinuierlich in der Reihenfolge von.
#Rot mit den folgenden Einstellungen-> green, green ->Es bedeutet einen Blauwechsel.
#
#########################################################################

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)

Mit der obigen Implementierung ist das Einstellen der konstituierenden Farben nicht intuitiv und ein wenig schwierig, aber Verwenden von matplotlib.colors.LinearSegmentedColormap.from_list Es kann mit einer Liste von Farbcodes erstellt werden.

#Beim Erstellen mit Liste
import matplotlib as mpl
color_list = ['red', 'green', 'blue']
cmap = mpl.colors.LinearSegmentedColormap.from_list('colormap_name', color_list)

[Farbkarte erstellt] image.png

Implementierung

Verwenden Sie beim Erstellen Ihrer eigenen Farbkarte die mit matplotlib.cm.register_cmap erstellte Farbkarte. Es ist bequem, sich zu registrieren.

import matplotlib.pyplot as plt
import matplotlib as mpl

def set_custom_colormap(name: str, color_list: list):
    
    """
    color_Konvertieren Sie die Liste in eine Farbkarte und registrieren Sie sie in matplotlib mit Namen.
Zwei Muster vom diskreten Typ und vom kontinuierlichen Typ sowie vier Muster von Farbkarten werden in umgekehrter Reihenfolge registriert.
    """

    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

Sie müssen lediglich den Farbcode der Farbe überprüfen, die Sie einstellen möchten.

SENSY colormap

COLORMAP_SOURCE_DICT = {
    
    #Monochromatische Abstufung
    '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'],
    
    #Mehrfarbige Abstufung
    'sensy': ['#FF6B9A', '#4E6FF0'],
    'sensy_diverge': ['#FF6B9A', '#FFFFFF', '#4E6FF0'],
    'sensy_accent': ['#5073ED', '#FA8EB5', '#A7C0FD', '#2B2C4B', '#F4458C', '#4B4C80'],

}

#Farbkartenerstellung&Anmeldung
for name, color_list in COLORMAP_SOURCE_DICT.items():
    set_custom_colormap(name, color_list)


#Grundeinstellung###################

#Erste Farbkarte
DEFAULT_COLORMAP = 'sensy_accent_dis'

#Bei Verwendung von matplotlib
mpl.rcParams['image.cmap'] = DEFAULT_COLORMAP

#Bei Verwendung von Seaborn
import seaborn as sns
sns.set()
sns.set_palette(DEFAULT_COLORMAP)

      

[Farbkartenbild] image.png image.png

[Anpassungsbild]

Diagrammtyp Bild
Balkendiagramm image.png
Streudiagramm image.png
Kontur image.png
Wärmekarte image.png

abschließend

Wenn ich den Farbcode kennen würde, den ich verwenden wollte, könnte ich leicht meine eigene Farbkarte erstellen. Wenn Sie der Meinung sind, dass die Farbabweichungen der normalerweise verwendeten Grafiken unbefriedigend oder inkonsistent sind, Es kann Spaß machen, selbst eine schöne Farbkarte zu erstellen.

Referenz

Recommended Posts

Wenden wir die Markenbildfarbe auf die Farbkarte von matplotlib an!
Wenn Sie mit der Maus über Matplotlib fahren, wird das entsprechende Bild angezeigt.
Punkt entsprechend dem Bild
Der Weg zum Herunterladen von Matplotlib
Schneiden wir das Gesicht aus dem Bild
Ich möchte die Farbe ändern, indem ich auf den Streupunkt in matplotlib klicke
Lassen Sie uns die Kamera aktivieren und Mosaik auf das menschliche Gesicht auftragen (OpenCV)
Geben Sie die Farbe in der matplotlib 2D-Karte an
Wenden Sie die Fehlerausbreitungsformel auf den Standardfehler an
Stellen Sie die Farbe der xticklabels individuell mit matplotlib ein
Richten Sie die Farbleiste mit matplotlib an der Figur aus
So weisen Sie der Matplotlib-Farbleiste mehrere Werte zu
So berechnen Sie die Volatilität einer Marke
Versuchen Sie, dem Bild die Verzerrung des Fischaugenobjektivs hinzuzufügen
Einführung in Python Bereiten wir die Entwicklungsumgebung vor
Schneiden Sie das Bild mit Pythonista auf abgerundete Ecken
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Wenden Sie Pandas Extraction Basic Syntax / Response auf matplotlib an
ROS-Kurs 119 Korrigieren Sie die Farbe des Kamerabildes