2017-06-01 170 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

兩件事情:

  1. yshift使用相當小,因此效果我不能直接明顯。
  2. 調用plt.tight_layout()重新排列軸,從而覆蓋您設置的位置。

所以你可能想先打電話plt.tight_layout(),然後改變位置。

+0

你對第二點有所瞭解;它確實是恢復手動定位的'plt.tight_layout()'調用。 – emher