ホームページ  >  記事  >  バックエンド開発  >  Matplotlib で散布図用の離散カラーバーを作成するにはどうすればよいですか?

Matplotlib で散布図用の離散カラーバーを作成するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-25 09:33:04995ブラウズ

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 の他のエントリは、残りのタグ値の色を定義します。

個別のカラーバーを作成するには、ビンを定義してデータを正規化することも必要です。 scipy.stats.binned_statistic 関数を使用すると、各データ ポイントの個別のランクを計算し、それらを個別のグループに割り当てることができます。次に、colors.BoundaryNorm を使用してデータを正規化し、目的のカラーバー範囲にマッピングできます:

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

最後に、2 番目の軸を Figure に追加してカラーバー自体を作成できます:

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

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