在行:
formatter = FuncFormatter(millions)
正在创建的FuncFormatter
类,它正在与millions
函数初始化的一个实例。这是一个matplotlib接受的类,它是api的一部分来格式化tick。在该示例中,将formatter
对象传递给y轴的set_major_formatter
方法,以便使用millions
函数格式化滴答。
你可以看到这是如何工作在matplotlib源代码。类的定义如下:
class FuncFormatter(Formatter):
"""
User defined function for formatting
The function should take in two inputs (tick value *x* and position *pos*)
and return a string
"""
def __init__(self, func):
self.func = func
def __call__(self, x, pos=None):
'Return the format for tick val *x* at position *pos*'
return self.func(x, pos)
所以,现在存储在formatter
对象将具有属性func
它指向millions
功能。当matplotlib让到你通过它的formatter
对象的调用,它将传递参数(即由蜱表示的值),这是指向self.func
由于millions
功能只格式化为millions
功能基于x值而不是在该位置上打勾,millions
的定义仅包含pos
参数作为虚拟占位符。它必须这样做,以便在格式化ticks时由matplotlib调用self.func(x, pos)
时不会出现错误。
仿函数是概念 – JMJ