Matplotlib 为什么MultipleLocator会在轴的标签列表中添加额外的标签?

Matplotlib 为什么MultipleLocator会在轴的标签列表中添加额外的标签?,matplotlib,ticker,Matplotlib,Ticker,在使用matplotlib时,我注意到matplotlib中存在以下令人困惑的行为 MultipleLocator #!/usr/bin/env python import matplotlib.pyplot as plt import numpy as np from matplotlib.ticker import MultipleLocator x = np.arange(0,10,0.1) y = x**3 fig = plt.figure() fig.canvas.draw(

在使用matplotlib时,我注意到matplotlib中存在以下令人困惑的行为
MultipleLocator

#!/usr/bin/env python
import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib.ticker import MultipleLocator

x = np.arange(0,10,0.1)

y = x**3

fig = plt.figure() fig.canvas.draw()

ax = fig.add_subplot(111)

ax.plot(x,y)

#ax.xaxis.set_major_locator(MultipleLocator(2))

fig.show()

ticks = [t.get_text() for t in ax.get_xticklabels()] 
当自动完成勾选时(注释掉行
ax.xaxis.set\u major\u locator(MultipleLocator(2))
),列表中的文本元素将从“0”变为“10”(第2步)

然而,一旦我打开MultipleLocator的使用,两个额外的空字符串就会添加到列表的前面和末尾

In [197]: ticks
Out[197]: ['', u'0', u'2', u'4', u'6', u'8', u'10', '']
这令人困惑。
有人能解释一下这种行为是从哪里来的吗?

简短回答:mpl内部。额外的记号位置可能由标注生成,标注在绘图时被删减。但令人困惑的是,它没有记录在案。我无意中发现了这一点,因为我想修改轴上的最后一个记号标签。但是每当我做了像ax.getxticklabels()[-1]这样的事情时,我都无法修改任何东西。
In [197]: ticks
Out[197]: ['', u'0', u'2', u'4', u'6', u'8', u'10', '']