2015-09-27 57 views
0

This webpage已經讓我相信我可以傳遞一個空字符串到matplotlib.yticks以關閉圖形的y-ticks。將空字符串傳遞給matplotlib的yticks

然而,當我試圖做到這一點,我得到以下錯誤:

In [1]: from pylab import * 

In [2]: figure() 
Out[2]: <matplotlib.figure.Figure at 0xb69d43cc> 

In [3]: yticks('') 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-3-7ead106262fa> in <module>() 
----> 1 yticks('') 

/usr/local/lib/python2.7/dist-packages/matplotlib/pyplot.pyc in yticks(*args, **kwargs) 
    1631  elif len(args)==1: 
    1632   locs = ax.set_yticks(args[0]) 
-> 1633   labels = ax.get_yticklabels() 
    1634  elif len(args)==2: 
    1635   locs = ax.set_yticks(args[0]) 

/usr/local/lib/python2.7/dist-packages/matplotlib/axes/_base.pyc in get_yticklabels(self, minor, which) 
    2912   return cbook.silent_list('Text yticklabel', 
    2913         self.yaxis.get_ticklabels(minor=minor, 
-> 2914                which=which)) 
    2915 
    2916  @docstring.dedent_interpd 

/usr/local/lib/python2.7/dist-packages/matplotlib/axis.pyc in get_ticklabels(self, minor, which) 
    1212   if minor: 
    1213    return self.get_minorticklabels() 
-> 1214   return self.get_majorticklabels() 
    1215 
    1216  def get_majorticklines(self): 

/usr/local/lib/python2.7/dist-packages/matplotlib/axis.pyc in get_majorticklabels(self) 
    1166  def get_majorticklabels(self): 
    1167   'Return a list of Text instances for the major ticklabels' 
-> 1168   ticks = self.get_major_ticks() 
    1169   labels1 = [tick.label1 for tick in ticks if tick.label1On] 
    1170   labels2 = [tick.label2 for tick in ticks if tick.label2On] 

/usr/local/lib/python2.7/dist-packages/matplotlib/axis.pyc in get_major_ticks(self, numticks) 
    1295   'get the tick instances; grow as necessary' 
    1296   if numticks is None: 
-> 1297    numticks = len(self.get_major_locator()()) 
    1298   if len(self.majorTicks) < numticks: 
    1299    # update the new tick label properties from the old 

TypeError: len() of unsized object 

這是怎麼回事?如果這種關閉y-ticks的方法不正確,那麼正確的方法是什麼?

回答

2

yticks從matplotlib函數期望列表作爲參數而不是字符串。因此,關閉的y蜱,

In [1]: import matplotlib.pyplot as plt 
In [2]: plt.figure() 
Out[2]: <matplotlib.figure.Figure at 0x10ef23710> 

In [3]: plt.yticks([]) 
Out[3]: ([], <a list of 0 Text yticklabel objects>) 

在過去在matplotlib蜱更多的控制,可考慮使用tick_paramsthis answer指出。

1

這個問題的可接受的解決方案應該實現你想要的,並讓你更好地控制顯示內容。

Remove xticks in a matplot lib plot?

例如,用於關閉所有蜱在y軸:

>>> from pylab import * 
>>> figure() 
>>> plot(arange(10)) 
>>> tick_params(axis='y', which='both', left='off', right='off', labelleft='off') 
>>> show() 
+0

很酷,謝謝。正在傳遞一個空字符串,這個字符串曾經被支持但不再是? – dbliss