首頁 >後端開發 >Python教學 >如何在 Matplotlib 中為散點圖建立自訂離散色條?

如何在 Matplotlib 中為散點圖建立自訂離散色條?

Patricia Arquette
Patricia Arquette原創
2024-10-25 06:37:02640瀏覽

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

離散化散佈圖的 Matplotlib 顏色條

在散佈圖中,連續色條可能並不總是足以表示離散資料。建立離散色條對於有效視覺化底層模式至關重要。

為了實現這一點,Matplotlib 中的 BoundaryNorm 類別可以用作散佈圖的標準化器。這確保了不同的值由唯一的顏色表示。

嘗試將特定值設為灰色時,自訂顏色欄會遇到一個挑戰。為了解決這個問題,可以透過提取和覆蓋顏色條目來修改現有的調色板。

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

修改調色盤後,可以建立自訂顏色圖。然後利用 BoundaryNorm 來定義分箱並相應地標準化資料。

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

修改後的調色板和標準化到位後,可以渲染散點圖。新增單獨的軸來容納色條,該色條經過自訂以顯示離散邊界及其對應的顏色。

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

此方法可以建立自訂離散色條,可有效地在散佈圖中傳達離散數據,提供底層模式的更清晰的視覺表示。

以上是如何在 Matplotlib 中為散點圖建立自訂離散色條?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn