2015-06-20 72 views
0

我試圖減少我的代碼足跡,使我更容易理解,當我偶然發現一個奇怪的結果時。如果我運行下面的代碼:壓縮ticklines不允許更改它們的屬性

y1 = np.linspace(1,1000) 
y2 = np.linspace(10,1) 

c = ["b","g"] 
fig, ax = plt.subplots() 

ax.plot(y1, c[0]) 
ax2 = ax.twinx() 
ax2.plot(y2, c[1]) 

for tl in ax.yaxis.get_ticklines(): 
    tl.set_color(c[0]) 

for ts in ax.yaxis.get_ticklabels(): 
    ts.set_color(c[0]) 

我得到以下輸出:

enter image description here

然而,當我嘗試壓縮此使用,以減少下面的代碼量:

for t in zip(ax.yaxis.get_ticklines(),ax.yaxis.get_ticklabels()): 
    t[0].set_color(c[0]),t[1].set_color(c[0]) 

enter image description here

所有的tickla bels會改變,但只有一些ticklines(那些不改變的會被標記爲紅色)。是否有一些理由說明,爲什麼只有一些壓縮ticklines會導致更改?

回答

1

我猜,ax.yaxis.get_ticklines()的數量是ax.yaxis.get_ticklabels()的兩倍,所以在繪製全部圖片之前,拉鍊只停下來,而單獨的循環都很好。

此行爲的zipPython documentation中進行了說明。