2016-08-26 46 views
0

如何首先獲取matplotlib軸的標記標籤而不先調用plt.show?我正在嘗試設置一些子圖,操縱窗口限制和刻度標籤,然後將它們一起放在屏幕上。但是,get_xticklabels()方法返回一個空字符串,除非plt.show被稱爲:在繪製圖之前獲取matplotlib中的軸標記

import matplotlib.pyplot as plt 
fig, ax = plt.subplots(1, 1) 
ax.plot(1, 1)  

print("before plt.show(): {}".format(ax.get_xticklabels()[0].get_text())) 
plt.show() 
print("after plt.show(): {}".format(ax.get_xticklabels()[0].get_text())) 

輸出:

In [33]: %run plt_premature_ticks.py 
before plt.show(): 
after plt.show(): 0.94 

這不是預期的行爲,試圖獲取標籤前的數字是實際顯示?

回答

3

添加fig.canvas.draw()ax.get_xticklabels()

import matplotlib.pyplot as plt 
fig, ax = plt.subplots(1, 1) 
ax.plot(1, 1)  
fig.canvas.draw() 
print("before plt.show(): {}".format(ax.get_xticklabels()[0].get_text())) 
plt.show() 
print("after plt.show(): {}".format(ax.get_xticklabels()[0].get_text())) 
0

雖然HYRY給了一個正確的答案原來的問題,我遇到了幾個案例,其中一個需要調用一個實例的draw方法讓滴答標籤可見。在這種情況下,應調用以下內容:

renderer = fig.canvas.get_renderer() 
ax.draw(renderer) 
相關問題