ホームページ >バックエンド開発 >Python チュートリアル >複数の Matplotlib サブプロット間で単一のカラーバーを共有するにはどうすればよいですか?

複数の Matplotlib サブプロット間で単一のカラーバーを共有するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-11 21:00:24126ブラウズ

How to Share a Single Colorbar Across Multiple Matplotlib Subplots?

Matplotlib で複数のサブプロットのカラーバーを共有する

Matplotlib で複数のサブプロットを作成する場合、すべてのサブプロットに共通のカラーバーを表示することが望ましい場合があります。プロットを作成し、一貫したカラー スキームと参照を確保します。これは、異なるサブプロット間で値とパターンを比較する場合に特に役立ちます。

ジレンマ

カラーバーを共有するときによくある問題の 1 つは、個々のカラーバーの自己相関です。サブプロットの境界ボックス内にプロットとカラーバーの両方が収まるようにサイズを変更します。これにより、サブプロットのサイズが不均等になり、一貫性がなくなってしまう可能性があります。

解決策: カラーバーの分離

この問題の解決策は、カラーバー専用の別の軸を作成することです。この軸は、プロットとは独立してカラーバーを表示するために使用され、そのサイズと位置をより詳細に制御できるようになります。

このアプローチを実装するには、次の手順に従います。

  1. subplots_adjust を使用します。図全体にカラーバー用のスペースを確保する関数。これは、Figure の右側を Figure の幅の一部 (通常は 1.0 よりわずかに小さくしてマージンを残す) として指定することによって行われます。
  2. add_axes を使用して、カラーバーの別のサブプロット軸を作成します。このサブプロットは主軸の右側に配置する必要があります。
  3. colorbar 関数を使用して別の軸にカラーバーを作成し、cax パラメータで関連する軸を指定します。
  4. 軸を非表示にするカラーバーのサブプロットに線と目盛を追加して、スタンドアロンのカラーバーの外観を与えます。

これはこのアプローチを示すコード例:

import numpy as np
import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=2, ncols=2)
for ax in axes.flat:
    im = ax.imshow(np.random.random((10,10)), vmin=0, vmax=1)

fig.subplots_adjust(right=0.8)
cbar_ax = fig.add_axes([0.85, 0.15, 0.05, 0.7])
fig.colorbar(im, cax=cbar_ax)

plt.show()

このコードは、添付の画像に示すように、4 つのサブプロットを作成し、サブプロットの右側に 1 つのカラーバーを配置します。カラーバーはサブプロットと配色を共有し、そのサイズと位置はサブプロットから独立しています。

これらの手順に従うことで、複数のサブプロット間で単一のカラーバーを効果的に共有することができ、一貫性を確保し、データのプレゼンテーション

以上が複数の Matplotlib サブプロット間で単一のカラーバーを共有するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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