在matplotlib直方图的y轴上调用函数

时间:2018-03-20 10:03:20

标签: python matplotlib histogram

我想用函数格式化直方图的y轴:

def convertCountToKm2(x):
    return x * 25.0 * 1e-6

因为这会将直方图y轴从单元格数转换为km2区域。直方图由以下人员创建:

bins = numpy.array(list(range(0,7000,1000)))
plt.hist(Anonzero,bins)

这导致了这个数字:

enter image description here

我尝试使用以下代码调用该函数:

yFormat = tkr.FuncFormatter(convertCountToKm2)
plt.yaxis.set_major_formatter(yFormat)

返回错误:module 'matplotlib.pyplot' has no attribute 'yaxis'

How do I format axis number format to thousands with a comma in matplotlib?似乎也有关于格式化轴的一些提示,但这并不是特定于这种情况。我无法用它来回答我的问题。

1 个答案:

答案 0 :(得分:2)

错误告诉您plt(我认为pyplot}没有yaxis,这是正确的。 yaxis是轴的属性。使用

plt.gca().yaxis.set_major_formatter(...)

解决这个问题可能会遇到另一个问题,即FuncFormatter的函数需要接受两个参数x, pos。您可以忽略pos,但必须在签名

def convertCountToKm2(x, pos=None):
    return x * 25.0 * 1e-6

yFormat = FuncFormatter(convertCountToKm2)
plt.gca().yaxis.set_major_formatter(yFormat)