Heim  >  Artikel  >  Backend-Entwicklung  >  ## Wie erstelle ich eine diskrete Farbleiste für Streudiagramme in Matplotlib?

## Wie erstelle ich eine diskrete Farbleiste für Streudiagramme in Matplotlib?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-25 09:13:28856Durchsuche

## How to Create a Discrete Colorbar for Scatterplots in Matplotlib?

Matplotlib Discrete Colorbar

Einführung

Matplotlib ist eine beliebte Python-Bibliothek zur Datenvisualisierung. Streudiagramme sind ein gängiger Plottyp zur Darstellung der bivariaten Verteilung von Datenpunkten. In manchen Fällen ist es wünschenswert, jeden Datenpunkt mit einer eindeutigen Farbe darzustellen. In diesem Artikel wird gezeigt, wie Sie eine diskrete Farbleiste für ein Streudiagramm in Matplotlib erstellen und ganzzahlige Tag-Werte effektiv bestimmten Farben zuordnen.

Verwenden einer BoundaryNorm

Um eine diskrete Farbleiste zu erstellen, wird eine BoundaryNorm verwendet als Normalisierer für das Streudiagramm. Eine BoundaryNorm unterteilt den Datenbereich in eine Reihe von Abschnitten, wobei jeder Abschnitt einer bestimmten Farbe entspricht. Der folgende Python-Code zeigt, wie man mithilfe einer BoundaryNorm eine diskrete Farbleiste erstellt:

<code class="python">import numpy as np
import matplotlib as mpl
import matplotlib.pylab as plt

x = np.random.rand(20)  # Define the data
y = np.random.rand(20)  # Define the data
tag = np.random.randint(0, 20, 20)

cmap = plt.cm.jet  # Define the colormap
bounds = np.linspace(0, 20, 21)  # Define the bins for the colorbar
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)  # Create the BoundaryNorm

plt.scatter(x, y, c=tag, cmap=cmap, norm=norm)  # Create the scatterplot with the discrete colorbar

plt.colorbar()  # Display the colorbar</code>

Dieser Code erstellt ein Streudiagramm mit 20 zufällig generierten Datenpunkten, denen jeweils ein zufälliger ganzzahliger Tag-Wert von 0 bis 19 zugewiesen wird Die Farbleiste zeigt 20 verschiedene Farben an, wobei jede Farbe einem bestimmten Tag-Wert entspricht.

Anpassen der Farbleiste

In bestimmten Fällen kann es wünschenswert sein, die Farben in der Farbleiste anzupassen. Dies kann durch Erstellen einer benutzerdefinierten Farbkarte mithilfe der LinearSegmentedColormap-Klasse erreicht werden. Der folgende Python-Code zeigt, wie eine benutzerdefinierte Farbkarte mit einer grauen Farbe für den Tag-Wert 0 und verschiedenen Farben für die Tag-Werte 1 bis 20 erstellt wird:

<code class="python">cmaplist = [cmap(i) for i in range(cmap.N)]  # Extract all colors from the original colormap
cmaplist[0] = (.5, .5, .5, 1.0)  # Override the first color with gray

cmap = mpl.colors.LinearSegmentedColormap.from_list('Custom cmap', cmaplist, cmap.N)  # Create the custom colormap</code>

Wenn die benutzerdefinierte Farbkarte definiert ist, kann sie in verwendet werden Streudiagramm wie folgt:

<code class="python">plt.scatter(x, y, c=tag, cmap=cmap, norm=norm)</code>

Dieser Code erstellt ein Streudiagramm mit denselben Datenpunkten wie zuvor, aber die Farbleiste zeigt jetzt die benutzerdefinierten Farben an, wobei Grau den Tag-Wert 0 darstellt.

Optimierung für visuelle Klarheit

Während die Verwendung einer diskreten Farbleiste mit einer großen Anzahl von Farben eine große Auswahl an Optionen bieten kann, ist es wichtig, die visuelle Klarheit zu berücksichtigen. Eine große Anzahl unterschiedlicher Farben kann die visuelle Unterscheidung bestimmter Werte erschweren. In manchen Fällen kann es von Vorteil sein, eine reduzierte Anzahl von Farben zu verwenden oder ähnliche Tag-Werte in Farbbereichen zu gruppieren. Letztendlich hängt die optimale Wahl der Farben und Farbbereiche von den konkreten Daten und dem Verwendungszweck des Grundstücks ab.

Das obige ist der detaillierte Inhalt von## Wie erstelle ich eine diskrete Farbleiste für Streudiagramme in Matplotlib?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn