2013-08-23 20 views
9

私は私のプロットにMathematicaを使用しています。それは本当の苦痛であり、手作業ですべてを行わなければならなかったが、結果は私が望むものに非常に近いところで起こった。一つの例は以下の通りである。matplotlibのカラーバーの背景とラベルの配置

​​

私は本当にカラーバーの背景にグレーの丸い長方形のような。 Mathematicaではすべてを手作業で調整する必要がありましたが、matplotlibはもっと自動化されており、素晴らしい結果が得られました。

Mathematica example plot

しかし、私が持っている二つの問題が残っている:

  1. 私は、バックグラウンドで角の丸い四角形を行う方法がわかりません。私はfancybboxパッチを見ましたが、私が望むようにそれをカラーバーで動作させることはできませんでした。 Mathematicaのようなものを手に入れるにはどうすればいいですか?プロットでの伝説のために派手なBBOXオプションがあるように思わ...しかし、私は「小記号」(<)を使用するとカラーバー
  2. 用カラーバーのラベルが右に移動しすぎません。これを調整するにはどうすればよいでしょうか(Mathematicaのプロットのように数字の間にさえも)?

私は正しい方向に向いて任意の提案を楽しみにしています:)。 2番目の質問に

+0

http://stackoverflow.com/questions/15882249/matplotlib-aligning-y-ticks-to-the-left/15883858#15883858 < - を調整する方法ティックラベルのパディング – tacaswell

+1

そしてコードを表示してください。 – tacaswell

答えて

17

:あなたはこのように、ticklabelsに向けて戻ってラベルを移動するために、負の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インチ)で与えられます。 y0.0が下縁と1.0上部で、[0, 1]の値を受け入れます。

結果:

Script Output

+1

'y'は区間[[0.0、1.0]'に限定されません。任意の浮動小数点数を使用できます。 'Y>場合1.0'ラベルは軸の上部_above_配置され、' Y場合<0.0'それは軸の底_below_配置されます。軸の座標は_normalized_であり、これは軸の「終点」の「開始」と「1.0」が「0.0」であることを意味します。 – hooy

+0

'[0、1]'は_interval表記であり、リスト表記ではありません。従って、これは、「0」から「1」までを意味する。これは、上記の答えとコメントの両方に当てはまります。 – hooy

関連する問題