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

DDD
Freigeben: 2024-10-25 09:33:04
Original
1003 Leute haben es durchsucht

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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')
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!