2017-04-22 55 views
4

我得到使用matplotlib設置一個羅吉特規模軸的標籤時是什麼樣子的標籤定位誤差,這是我的例子:的Python matplotlib ValueError異常的羅吉特規模軸標籤

import matplotlib.pyplot as plt; 
from matplotlib.ticker import FormatStrFormatter; 

x = [1,2,3,4,5]; 
y = [0.1,0.2,0.3,0.4,0.5]; 

fig,ax = plt.subplots(); 

ax.set_ylim([0.005,0.99]); 
ax.set_yscale('logit'); 
ax.yaxis.set_minor_formatter(FormatStrFormatter("")); 

ax.set_xlabel("X axis"); 
ax.set_ylabel("Y axis"); #set y axis label (logit scale) 

ax.plot(x,y); 
plt.show(); 
plt.close(); 

這裏的痕跡:

Traceback (most recent call last): 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/backends/backend_macosx.py", line 136, in _draw 
    self.figure.draw(renderer) 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/artist.py", line 63, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/figure.py", line 1143, in draw 
    renderer, self, dsu, self.suppressComposite) 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/image.py", line 139, in _draw_list_compositing_images 
    a.draw(renderer) 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/artist.py", line 63, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/axes/_base.py", line 2409, in draw 
    mimage._draw_list_compositing_images(renderer, self, dsu) 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/image.py", line 139, in _draw_list_compositing_images 
    a.draw(renderer) 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/artist.py", line 63, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/axis.py", line 1150, in draw 
    self.label.draw(renderer) 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/artist.py", line 63, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/text.py", line 762, in draw 
    raise ValueError("posx and posy should be finite values") 
ValueError: posx and posy should be finite values 

偉大的作品時,我省略

ax.set_ylabel("Y axis"); #set y axis label (logit scale) 

這似乎並不重要的升abel在軸比例之前或之後設置。 任何人都知道如何解決這個問題?

回答

2

設置文本標籤的方式存在一個錯誤,這會導致Logit比例的非數字邊界框,請參見this issue on GitHub

的解決方案是增加

ax.spines['left']._adjust_location() 

(其中'left'可以通過'right''top''bottom'根據軸來代替一個有興趣)中的代碼。

完整的示例:

import matplotlib.pyplot as plt 

x = [1,2,3,4,5] 
y = [0.05,0.2,0.3,0.4,0.95] 

fig,ax = plt.subplots() 

ax.set_yscale('logit') 

ax.set_xlabel("X axis") 
ax.set_ylabel("Y axis") 
ax.spines['left']._adjust_location() 

ax.plot(x,y) 
plt.show() 

enter image description here

+0

這工作!非常感激!並感謝您的參考:) –