Benutzerdefinierte diskrete Farbleiste für Matplotlib-Streudiagramm
In Matplotlib können Sie durch die Erstellung einer diskreten Farbleiste für ein Streudiagramm Datenpunkte mit eindeutigen Farben darstellen auf ihren ganzzahligen Tag-Werten. Um dies zu erreichen, können eine benutzerdefinierte diskrete Farbkarte und eine BoundaryNorm verwendet werden.
Lassen Sie uns ein Streudiagramm mit zufälligen x- und y-Daten erstellen und ganzzahlige Tags im Bereich von 0 bis 20 zuweisen:
<code class="python">import matplotlib.pyplot as plt import numpy as np x = np.random.rand(20) y = np.random.rand(20) tag = np.random.randint(0, 20, 20)</code>
Zunächst zeigt die Farbleiste mit den Standardeinstellungen einen kontinuierlichen Farbbereich an:
<code class="python">plt.scatter(x, y, c=tag) plt.colorbar()</code>
Um eine diskrete Farbleiste zu erstellen, verwenden wir eine BoundaryNorm, um die Grenzen der Farbkarte zu definieren. Wir möchten außerdem sicherstellen, dass der Tag-Wert 0 durch eine graue Farbe dargestellt wird:
<code class="python">bounds = np.linspace(0, 20, 21) norm = mpl.colors.BoundaryNorm(bounds, cmap.N) cmaplist = [cmap(i) for i in range(cmap.N)] cmaplist[0] = (.5, .5, .5, 1.0) cmap = mpl.colors.LinearSegmentedColormap.from_list( 'Custom cmap', cmaplist, cmap.N)</code>
Das aktualisierte Streudiagramm mit der diskreten Farbleiste sieht folgendermaßen aus:
<code class="python">scat = ax.scatter(x, y, c=tag, s=np.random.randint(100, 500, 20), cmap=cmap, norm=norm) # Add the discrete colorbar ax2 = fig.add_axes([0.95, 0.1, 0.03, 0.8]) cb = plt.colorbar.ColorbarBase(ax2, cmap=cmap, norm=norm, spacing='proportional', ticks=bounds, boundaries=bounds, format='%1i')</code>
Dieser Ansatz bietet eine gut definierte diskrete Farbleiste für Ihr Streudiagramm, in der jeder Tag-Wert durch eine eindeutige Farbe dargestellt wird, einschließlich einer grauen Farbe für den Tag-Wert 0.
Das obige ist der detaillierte Inhalt vonWie erstelle ich eine benutzerdefinierte diskrete Farbleiste für ein Matplotlib-Streudiagramm?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!