1. ホーム
  2. python

matplotlib の散布図における対数カラーバー

2023-11-26 14:03:24

質問

私は散布図上の点の色をボイド率の値に対応させたいのですが、違いを増幅するために対数スケールで表示します。私はこれをしましたが、今、私がplt.colorbar()を行うとき、それは、私が本当に実際のボイド率をしたいときに、ボイド率の対数を表示します。どのように私は、[0.00001,1]に属するボイド率の適切なラベルを持つカラーバーの対数スケールを作ることができるのでしょうか?

これは私が今持っているプロットの画像ですが、ボイド率のカラーバーはその対数ではなく、本当のボイド率に対応するために適切なラベルがつけられていません。

fig = plt.figure()
plt.scatter(x,y,edgecolors='none',s=marker_size,c=np.log(void_fraction))
plt.colorbar()
plt.title('Colorbar: void fraction')

ご協力ありがとうございました。

どのように解決するのですか?

現在、ドキュメントの中に カラー マッピングと正規化がどのように機能するか

カラーマッピングと正規化の仕組みは matplotlib がカラーマッピングを行う方法は、2つのステップで行われます。 Normalize のサブクラスによってラップされた)関数です。 matplotlib.colors.Normalize のサブクラスでラップされている)、 渡されたデータを [0, 1] . 第二段階は [0,1] -> RGBA空間に値をマッピングします。

を使えばいいだけです。 LogNorm と一緒に渡される正規化クラス norm kwargで渡されます。

plt.scatter(x,y,edgecolors='none',s=marker_size,c=void_fraction,
                norm=matplotlib.colors.LogNorm())

プロットするためにデータを拡大・縮小する場合、データを表示する前に matplotlib に任せるのが良いでしょう。