将参数传递给matplotlib hexbin图中的reduce_C_function

时间:2018-07-12 08:28:21

标签: python matplotlib

我正在尝试在函数内部实现十六进制图,并且有一个相当复杂的reduce_C_function,需要接收参数a。一个(虽然很简单)的示例:

    def sum_i(z,a):
        return a*np.sum(z)
    def some_function(X,Y,Z,a):
        hexb = plt.hexbin(X,Y,C=Z,reduce_C_function=sum_i)

现在,matplotlib文档(https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.hexbin.html)并不是关于reduce_C_function的使用的非常全面的信息,那么我如何设法将a传递给我们?

1 个答案:

答案 0 :(得分:1)

您可以从sum_i中创建一个partial函数,并将其作为单个参数的函数传递给plt.hexbin

from functools import partial

def sum_i(z,a):
    return a*np.sum(z)
def some_function(X,Y,Z,a):
    reduce_function = partial(sum_i, a=a)
    hexb = plt.hexbin(X,Y,C=Z,reduce_C_function=reduce_function)

source code的外观来看,没有其他方法可以为reduce_C_function传递附加参数。