web-dev-qa-db-ja.com

Matplotlibカラーバーの背景とラベルの配置

最近まで、私はプロットにMathematicaを使っていました。それは本当に苦痛であり、すべてを手動で行わなければなりませんでしたが、結果は私が望んでいたものに非常に近いものでした。一例は次のとおりです。

Mathematica example plot

カラーバーの背景にある灰色の丸い長方形が本当に好きです。 Mathematicaではすべてを手動で調整する必要がありましたが、matplotlibははるかに自動化されており、すでに素晴らしい結果が得られています。

Mathematica example plot

しかし、私にはまだ2つの問題があります。

  1. 背景に角丸長方形を作成する方法がわかりません。 fancybboxパッチを確認しましたが、カラーバーで希望どおりに機能しませんでした。 Mathematicaボックスのようなものを手に入れる最良の方法は何ですか?プロットの凡例には、派手なbboxオプションがあるようです...しかし、カラーバーにはありません
  2. 「小さい記号」(<)を使用すると、カラーバーのラベルが右に移動しすぎます。どうすればこれを調整できますか(Mathematicaプロットのように数値の「中間」でも)?

私は正しい方向を指す提案を楽しみにしています:)。

13
oli

2番目の質問に対して:負のlabelpad値を使用して、次のようにラベルをティックラベルに戻すことができます。

import numpy as np
import matplotlib.pyplot as plt

data = np.linspace(0, 10, num=256).reshape(16,16) 

cf = plt.contourf(data, levels=(0, 2.5, 5, 7.5, 10))
cb = plt.colorbar(cf)

cb.set_ticklabels([r'$<10^{0}$', 1, 2, r'$10^{14}$', r'$10^{14}+12345678$'])
cb.set_label(r'$n_e$ in $m^{-3}$', labelpad=-40, y=0.45)

plt.show()

パラメータyを使用すると、対称性を高めるためにラベルをさらに上下に移動できます。

labelpadの引数は、ポイント(1/72インチ)で指定されます。 y[0, 1]の値を受け入れ、0.0は下の境界線、1.0は上の境界線です。

結果:

Script Output

22
mwil.me