散布図の点の色をボイド率の値に対応させたいのですが、違いを増幅するために対数目盛にします。これを行いましたが、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')
ご協力いただきありがとうございます。
現在、ドキュメントのセクションに カラーマッピングと正規化の仕組み (開発ドキュメントへのリンクですが、mplのすべてのバージョンに適用されます。メインラインドキュメント「まもなく」に記載されています。 )
matplotlib
がカラーマッピングを行う方法は2段階で、最初にNormalize
関数(matplotlib.colors.Normalize
のサブクラスによってラップされます)は、[0, 1]
に渡すデータをマッピングします。 2番目の手順では、値を[0,1]
-> RGBA空間にマッピングします。
LogNorm
kwargで渡されるnorm
正規化クラスを使用するだけです。
plt.scatter(x,y,edgecolors='none',s=marker_size,c=void_fraction,
norm=matplotlib.colors.LogNorm())
プロット用にデータをスケーリング/微調整する場合は、自分で行うよりもmatplotlib
で変換を行う方が適切です。