ホームページ >バックエンド開発 >Python チュートリアル >Matplotlib 散布図用のカスタム離散カラーバーを作成するには?

Matplotlib 散布図用のカスタム離散カラーバーを作成するには?

DDD
DDDオリジナル
2024-10-24 18:36:291132ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。