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

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

DDD
DDD原創
2024-10-25 09:33:041100瀏覽

How to Create a Discrete Colorbar for Scatterplots in Matplotlib?

為 Matplotlib 散佈圖建立離散色條

產生具有離散顏色表示的散佈圖是資料視覺化中的常見任務。這允許根據特定值為每個數據點分配唯一的顏色。

在 Matplotlib 中,可以使用 BoundaryNorm 作為散佈圖的標準化器來建立離散色條。這在使用整數標籤值時特別有用,例如提供的範例:

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

其中 tag 表示每個資料點的整數標籤值。

預設設定 plt .colorbar(),通常顯示連續範圍的顏色。若要建立離散色條,需要指定一組離散顏色。例如,要建立具有20 種顏色的色條,可以使用LinearSegmentedColormap.from_list 函數:

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)

這裡,第一個顏色條目設定為灰色,可用來表示標籤值0. cmaplist 中的其他條目定義剩餘標籤值的顏色。

要建立離散色條,還需要定義 bin 並標準化資料。 scipy.stats.binned_statistic 函數可用於計算每個資料點的單獨排名並將它們指派給離散組。然後,colors.BoundaryNorm 可用於標準化資料並將其對應到所需的色條範圍:

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

最後,可以將第二個軸添加到圖形中以建立色條本身:

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

這將建立一個具有指定配色方案的離散顏色條。可以透過修改邊界和邊界參數來調整離散顏色的數量。

透過執行以下步驟,可以在 Matplotlib 中產生離散色條,準確地表示資料點的基礎整數標記值。

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

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