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?

DDD
DDDOriginal
2024-10-25 09:33:04995Durchsuche

How to Create a Discrete Colorbar for Scatterplots in Matplotlib?

Erstellen einer diskreten Farbleiste für Matplotlib-Streudiagramme

Das Erstellen eines Streudiagramms mit diskreter Farbdarstellung ist eine häufige Aufgabe bei der Datenvisualisierung. Dadurch kann jedem Datenpunkt eine eindeutige Farbe basierend auf einem bestimmten Wert zugewiesen werden.

In Matplotlib kann die Erstellung eines diskreten Farbbalkens mithilfe einer BoundaryNorm als Normalisierer für das Streudiagramm erreicht werden. Dies ist besonders nützlich, wenn Sie mit ganzzahligen Tag-Werten arbeiten, wie im folgenden Beispiel:

plt.scatter(x, y, c=tag)

wobei tag den ganzzahligen Tag-Wert für jeden Datenpunkt darstellt.

Die Standardeinstellungen, plt .colorbar() zeigt normalerweise einen kontinuierlichen Farbbereich an. Um einen diskreten Farbbalken zu erstellen, ist es notwendig, einen Satz diskreter Farben anzugeben. Um beispielsweise eine Farbleiste mit 20 Farben zu erstellen, kann die Funktion LinearSegmentedColormap.from_list verwendet werden:

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)

Hier wird der erste Farbeintrag auf Grau gesetzt, das zur Darstellung des Tag-Werts von verwendet werden kann 0. Die anderen Einträge in der cmaplist definieren die Farben für die verbleibenden Tag-Werte.

Um eine diskrete Farbleiste zu erstellen, ist es auch notwendig, die Bins zu definieren und die Daten zu normalisieren. Mit der Funktion scipy.stats.binned_statistic können die einzelnen Ränge jedes Datenpunkts berechnet und diskreten Gruppen zugeordnet werden. Dann kann die „colors.BoundaryNorm“ verwendet werden, um die Daten zu normalisieren und sie dem gewünschten Farbbalkenbereich zuzuordnen:

bounds = np.linspace(0, 20, 21)
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)

Schließlich kann der Abbildung eine zweite Achse hinzugefügt werden, um den Farbbalken selbst zu erstellen:

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')

Dadurch wird eine diskrete Farbleiste mit dem angegebenen Farbschema erstellt. Die Anzahl der diskreten Farben kann durch Ändern der Grenzen- und Grenzparameter angepasst werden.

Durch Befolgen dieser Schritte ist es möglich, in Matplotlib einen diskreten Farbbalken zu generieren, der die zugrunde liegenden Ganzzahl-Tag-Werte der Datenpunkte genau darstellt.

Das obige ist der detaillierte Inhalt vonWie 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