私はquadmesh
を使って単純な極座標プロットを作成しています。ここで私は何をしようとしている基本的に生成し、最小限のスクリプトがあります:matplotlibカラーバーの配置とサイズ
from __future__ import unicode_literals
import numpy as np
import matplotlib.pyplot as plt
def make_plot(data,fig,subplot):
nphi,nt = data.shape
phi_coords = np.linspace(0,np.pi*2,nphi+1) - np.pi/2.
theta_coords = np.linspace(0,np.radians(35),nt+1)
ax = fig.add_subplot(subplot,projection='polar')
ax.set_thetagrids((45,90,135,180,225,270,315,360),(9,12,15,18,21,24,3,6))
ax.set_rgrids(np.arange(10,35,10),fmt='%s\u00b0')
theta,phi = np.meshgrid(phi_coords,theta_coords)
quadmesh = ax.pcolormesh(theta,phi,data)
ax.grid(True)
fig.colorbar(quadmesh,ax=ax)
return fig,ax
a = np.zeros((360,71)) + np.arange(360)[:,None]
b = np.random.random((360,71))
fig = plt.figure()
t1 = make_plot(a,fig,121)
t2 = make_plot(b,fig,122)
fig.savefig('test.png')
上記のスクリプトは、次のようになりますプロットを作成します。
私はカラーバーをしたいと思います。
- 6ラベルと重複しません。
- は、プロットとほぼ同じ高さになるようにスケーリングしてください。
これを正しく行うにはどんなトリックがありますか? (このレイアウトは、私が使用する唯一のレイアウトではないことに注意してください。例えば、1x2レイアウト、または4x4レイアウトを使用するかもしれません...カラーバーを同じ高さにスケールする方法があるようです関連するプロット...)
これは2x1レイアウトでは機能しますが、1x2レイアウトでは機能しません(カラーバーが小さすぎる)。私は本当にレイアウトに依存しないソリューションを探しています。私のrcparamsが行く限り、私は確信していません。私は(私の知る限り)rcファイルを持っておらず、 'print matplotlib.rcParams ['bounding_box_tight']'は 'KeyError'になります。 – mgilson
@mgilson私はキーが間違って記憶されている、編集を参照してください。私は根本的な問題は、 'axes'オブジェクトの境界ボックスが極座標プロットの周りを包むことがなく、すべてのカラーバーの長さがオーバーサイズの境界ボックスから離されているということです。 – tacaswell
私はまだ 'savefig.bbox'の' KeyError'を取得します。私はさらに、isinstance(v、str)ならばmatplotlib.rcParams.values()のvに対してvを試してみました。空のリストを与えてくれました。私はバージョン1.1.1を使用しています。 – mgilson