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!