2013-10-28 8 views
15

私はdraw a colorbar whose height matches the master axesにトリックを使用します。コードは次のとおりですmatplotlib:現在の軸のインスタンスを変更する(つまり、gca())

import matplotlib.pyplot as plt 
from mpl_toolkits.axes_grid1 import make_axes_locatable 
import numpy as np 

ax = plt.subplot(111) 
im = ax.imshow(np.arange(100).reshape((10,10))) 

# create an axes on the right side of ax. The width of cax will be 5% 
# of ax and the padding between cax and ax will be fixed at 0.05 inch. 
divider = make_axes_locatable(ax) 
cax = divider.append_axes("right", size="5%", pad=0.05) 

plt.colorbar(im, cax=cax) 

このトリックはうまくいきます。ただし、新しい軸が追加されるため、図の現在のインスタンスは追加された軸であるcaxになります。結果として、

plt.text(0,0,'whatever') 

のように操作を実行すると、テキストはaxの代わりにcax(つまり、imが属する軸)に描画されます。

一方、gcf()。axesは両方の軸を示します。

私の質問は、現在の軸のインスタンス(gca()によって返される)を元の軸にする方法です。

+0

私はすぐに回避策を見つけました:plt.textの 'ax'引数を元のaxに指定するだけです:plt.colorbar(im、cax = cax、ax = ax) – Liang

+0

'' ax.text (0、0、 '何でも') ''。 – fjarri

+0

@ボグダン、はい、私はその作品を理解しています。単純なplt.text()を引き続き使用したい場合は、それがワークフローの中断です。私はちょうど私自身のコメントに投稿した迅速な回避策によって、コールplt.colorbar(im、cax = cax、ax = ax)は実際にgca()をaxに戻します。これは、高さが一致するカラーバーを描画する関数を折り返したい場合に便利です。 – Liang

答えて

33

plt.scaを使用して現在の軸を設定します。

関連する問題