2017-06-01 105 views
1

カラーバーの上にラベルを配置しようとしています。ラベルの描画は問題ありませんが、カラーバー軸の最終的な位置調整は機能していません。 "set_position"を呼び出すだけで何もしないようです。ここに私のコードです:matplotlibカラーバーの位置を調整する

import numpy as np 
import matplotlib.pyplot as plt 

# Plot some sample data. 
X, Y = np.meshgrid(np.arange(1, 10, 0.1), np.arange(1, 10, 0.1)) 
Z = np.sin(X) ** 2 + np.cos(Y) ** 2 
plt.pcolor(X, Y, Z) 
# Add the colorbar. 
cb = plt.colorbar(shrink=0.8) 
cax = cb.ax 
# Add label on top of colorbar. 
cb.ax.set_xlabel("mylabel") 
cb.ax.xaxis.set_label_position('top') 
cb.ax.xaxis.set_label_coords(1.8, 1.05) 
# Adjust colorbar position (NOT working). 
pos1 = cax.get_position() 
yshift = pos1.height * 0.05/0.8 
pos2 = [pos1.x0, pos1.y0 - yshift, pos1.width, pos1.height] 
cax.set_position(pos2) 
# Adjust and show the plot. 
plt.tight_layout() 
plt.show() 

私は間違っていますか?

答えて

1

2つのこと:

  1. yshift使用するので効果が直接明らかではない、私、かなり小さいです。
  2. plt.tight_layout()を呼び出すと、軸が再配置され、設定した位置が上書きされます。

したがって、最初にplt.tight_layout()に電話してから、その位置を変更することをお勧めします。

+0

あなたは2番目のポイントで釘を打つ。それは確かにマニュアル配置を元に戻した 'plt.tight_layout()'呼び出しでした。 – emher

関連する問題