为什么matplotlib轴对象没有set_scale方法?

时间:2018-04-11 11:01:20

标签: python matplotlib

我想直接设置一个数字的Axis(注意:Axis not Axes),而不是调用Axes方法,如果我正在设置x或y轴,则需要我预先知道。

我可以使用...

为matplotlib图形对象设置x轴的比例
fig.get_axes()[0].set_xscale('log')

但是我不能通过类似的东西来做到这一点。

fig.get_axes()[0].xaxis.set_scale('log')

因为Axis对象(与Axes对象相对)没有set_scale方法。虽然它确实有一个get_scale方法(并且看似很多等效的set_ [xy] ????方法,但我注意到没有set_lim)。

是否有这样的原因,或者只是没有人想过以前暴露它?

(matplotlib 2.1.0)。

1 个答案:

答案 0 :(得分:0)

然后我发现Axis对象确实有一个方法_set_scale,可能是为了避免碰撞而命名。

注意下面的评论,调用强调的内部方法并不是一个好主意,我提出的相当狡猾的解决方案是......

def setup_log_axis(axis):
    if axis == axis.axes.xaxis:
        axis.axes.set_xscale('log')
    elif axis == axis.axes.yaxis:
        axis.axes.set_yscale('log')
....do more stuff