2014-11-05 343 views
0

我想在我的情節的頂部和底部有雙刻度標記。不幸的是,由於某種原因,這些蜱只是沒有對準這個情節:Matplotlib刻度對齊

http://puu.sh/cE2Ez/f270ab625e.png

按我的代碼:

plt.xlim([0, ncols]) 
plt.ylim([0, nrows]) 
plt.gca().invert_yaxis() 
plt.tick_params(axis='both', which='both', left='off', right='off', top='off', bottom='off') 

plt.tight_layout() 
    #ticks 
rect.set_yticks([0, 64, 128, 192, 256]) 
rect.get_yaxis().set_major_formatter(ticker.ScalarFormatter()) 

rect.tick_params(axis='both', which='both', left='off', right='off', top='off', bottom='off',  labelsize=6) 
xaxisbot = [int(args.UTC_time) + 11 * 110 * x for x in range(1833/110 + 1)] 
xaxistop = [x2 * 110 for x2 in range(1833/110+1)] 
plt.xticks(xaxistop, xaxisbot) 

rect2 = rect.twiny() 
rect2.tick_params(axis='both', which='both', left='off', right='off', top='off', bottom='off', labelsize=6) 
rect2.set_xticks(xaxistop) 
rect2.xaxis.tick_top() 

這些蜱似乎並沒有被匹配起來。有沒有更好的方法讓我調整它們,特別是當我使用標籤時?

在次要記錄中,當我嘗試在循環中創建一堆這些圖時,這些刻度只是粘貼在對方上而不是刪除和清除。但是,當我使用cla()時,我的圖沒有生成。有沒有辦法解決這個問題?

回答

0

您的代碼非常複雜,請嘗試刪除與問題無關的任何內容並提供minimal working example。特別是我們無法運行您的代碼,因爲rectargs未定義!

從我可以收集的問題出現,因爲在這段代碼之後,您可以繪製rectrect2上的數據。我假設這些是軸實例。如果是這樣那麼以下再現

import matplotlib.pyplot as plt 
import numpy as np 

ax1 = plt.subplot(111) 

xaxisbot = [11 * 110 * x for x in range(1833/110 + 1)] 
xaxistop = [x2 * 110 for x2 in range(1833/110+1)] 


ax1.tick_params(labelsize=6) 
ax1.set_xticks(xaxisbot) 

ax2 = ax1.twiny() 
ax2.tick_params(labelsize=6) 
ax2.set_xticks(xaxistop) 
ax2.xaxis.tick_top() 

# Add data to ax2 
ax2.plot(range(1500), range(1500)) 

ax.grid() 
plt.show() 

enter image description here

因此,要解決這個問題,你只需要手動設置的限制。例如增加:

ax1.set_xlim(xaxisbot[0], xaxisbot[-1]) 
ax2.set_xlim(xaxistop[0], xaxistop[-1]) 

,或者在代碼方面你已經給

rect.set_xlim(xaxisbot[0], xaxisbot[-1]) 
rect2.set_xlim(xaxistop[0], xaxistop[-1]) 

enter image description here

PS:你應該看看行了你plt.xticks(xaxistop, xaxisbot)這是真的什麼你意思是?它對我沒有意義,但它有一定的目的。

+0

嗨!感謝所有的幫助。我使用了plt.xticks(xaxistop,xaxisbot)來表示另一組在xaxisbot相同位置標記的值。 – 2014-11-05 17:41:31