2012-10-11 103 views
4

我正在用matplotlib繪圖。代碼是下面的(變量容器具有值)當用matplotlib繪圖時,更改刻度標籤的位置(移動)

cmap = mpl.colors.ListedColormap(['darkblue', 'blue', 'lightblue','lightgreen','yellow','gold','orange','darkorange','orangered','red']) 
bounds=[0, 10,20,30,40,50,60,70,80,100,200,1000] 
norm = mpl.colors.BoundaryNorm(bounds, cmap.N) 
img2 = plt.imshow(zvals,interpolation='nearest', 
       cmap = cmap, 
       norm=norm, 
       origin='lower') 


xlocations = na.array(range(30)) + 0.5 
xticks(xlocations, [str(x+1) for x in arange(30)], rotation=0, size=5) 
gca().xaxis.set_ticks_position('none') 
gca().yaxis.set_ticks_position('none') 
grid(True) 

這導致下面的圖片: http://imageshack.us/a/img145/7325/histogrammoverview.png

我想移動xticks(1,2,3的標籤,.. )左邊一點,所以它們在相應的顏色框下面。相應地,我還想將yticks(user1和user2)的標籤向下移動一點,以使它們正確顯示。如何才能做到這一點?

編輯:作爲事實上我可以改變以下行 xlocations = na.array(範圍(30))+ 0.5 到 xlocations = na.array(範圍(30))

然後得到的圖片是這樣的: http://imageshack.us/a/img338/7325/histogrammoverview.png

請看看網格是「通過」彩色框,這不是我想要的。如上圖所示,我希望網格邊框彩色框。在這個版本中,雖然標籤(1,2,3,...)正確放置在盒子下面。我怎樣才能正確地放置標籤(在彩色框下面)和圍繞彩色框而不是通過彩色框中間的網格。

SOLUTION

使用這種解決方案(通過答案的建議):

periods = 30 
xlocations = na.array(range(periods)) 
xminorlocations = na.array(range(periods))+0.5 
xticks(xlocations, [str(x+1) for x in arange(periods)], rotation=0, size=5) 
plt.set_xticks(xminorlocations, minor=True) 
grid(True, which='minor', linestyle='-') 

結果:hxxp://imageshack.us/a/img9/7325/histogrammoverview.png

回答

2

我認爲你可以通過管理

  • 設置maj或將位置標記到每個方塊的中間。
  • 將次要刻度設置爲每個正方形的邊緣。
  • 設置網格只顯示在次要滴答聲中。

網格只能在較小的蜱使用

plt.grid(True, which='minor') 

我就行樣式設置爲'-'也被顯示。

+1

耶這工作。 代碼我使用: 'xlocations = na.array(範圍(週期)) xminorlocations = na.array(範圍(週期))+ 0.5 xticks(xlocations,[STR(X + 1)中的x (真實的,其中='minor',linestyle =' - ')' 結果:http://www.microsoft.com/downloads/details.aspx? //imageshack.us/a/img9/7325/histogrammoverview.png – beta

相關問題