Heim  >  Artikel  >  Backend-Entwicklung  >  Wie können Sie in Matplotlib eine benutzerdefinierte diskrete Farbleiste für ein Streudiagramm erstellen?

Wie können Sie in Matplotlib eine benutzerdefinierte diskrete Farbleiste für ein Streudiagramm erstellen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-25 06:37:02561Durchsuche

How can you create a custom discrete colorbar for a scatterplot in Matplotlib?

Diskretisieren eines Matplotlib-Farbbalkens für Streudiagramme

In Streudiagrammen reicht ein kontinuierlicher Farbbalken möglicherweise nicht immer aus, um diskrete Daten darzustellen. Das Erstellen einer diskreten Farbleiste ist für die effektive Visualisierung der zugrunde liegenden Muster von entscheidender Bedeutung.

Um dies zu erreichen, kann die BoundaryNorm-Klasse in Matplotlib als Normalisierer für das Streudiagramm genutzt werden. Dadurch wird sichergestellt, dass unterschiedliche Werte durch eindeutige Farben dargestellt werden.

Eine Herausforderung beim Anpassen der Farbleiste entsteht, wenn versucht wird, einen bestimmten Wert so festzulegen, dass er als Grau angezeigt wird. Um dieses Problem zu lösen, kann die vorhandene Farbpalette durch Extrahieren und Überschreiben von Farbeinträgen geändert werden.

<code class="python">cmaplist = [cmap(i) for i in range(cmap.N)]
# force the first color entry to be grey
cmaplist[0] = (.5, .5, .5, 1.0)</code>

Nach dem Ändern der Farbpalette kann eine benutzerdefinierte Farbkarte erstellt werden. Die BoundaryNorm wird dann verwendet, um das Binning zu definieren und die Daten entsprechend zu normalisieren.

<code class="python">cmap = mpl.colors.LinearSegmentedColormap.from_list(
    'Custom cmap', cmaplist, cmap.N)
bounds = np.linspace(0, 20, 21)
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)</code>

Mit der geänderten Farbpalette und der Normalisierung kann das Streudiagramm gerendert werden. Für die Farbleiste wird eine separate Achse hinzugefügt, die angepasst wird, um die diskreten Grenzen und ihre entsprechenden Farben anzuzeigen.

<code class="python">scat = ax.scatter(x, y, c=tag, cmap=cmap, norm=norm)
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 ermöglicht die Erstellung benutzerdefinierter diskreter Farbleisten, die diskrete Daten innerhalb eines Streudiagramms effektiv kommunizieren. Bereitstellung einer klareren visuellen Darstellung der zugrunde liegenden Muster.

Das obige ist der detaillierte Inhalt vonWie können Sie in Matplotlib eine benutzerdefinierte diskrete Farbleiste für ein Streudiagramm erstellen?. 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