首頁  >  文章  >  後端開發  >  如何為 Matplotlib 散點圖建立自訂離散色條?

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

DDD
DDD原創
2024-10-24 18:36:29968瀏覽

How to Create a Custom Discrete Colorbar for a Matplotlib Scatterplot?

Matplotlib 散點圖的自訂離散色條

在Matplotlib 中,為散點圖建立離散顏色條可讓您使用基於獨特顏色的數據點表示關於它們的整數標籤值。為此,可以使用自訂離散顏色圖和 BoundaryNorm。

讓我們用隨機x 和y 資料建立散點圖,並分配0 到20 範圍內的整數標籤:

<code class="python">import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(20)
y = np.random.rand(20)
tag = np.random.randint(0, 20, 20)</code>

最初,使用預設設置,色條顯示連續範圍的顏色:

<code class="python">plt.scatter(x, y, c=tag)
plt.colorbar()</code>

要建立離散色條,我們將使用BoundaryNorm 來定義顏色圖的邊界。我們也希望確保標籤值0 由灰色表示:

<code class="python">bounds = np.linspace(0, 20, 21)
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)

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)</code>

帶有離散色條的更新散點圖如下所示:

<code class="python">scat = ax.scatter(x, y, c=tag, s=np.random.randint(100, 500, 20),
                  cmap=cmap, norm=norm)

# Add the discrete colorbar
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>

此方法提供散點圖的明確定義的離散色條,其中每個標籤值都由唯一的顏色表示,包括標籤值0 的灰色。

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

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