我想直接设置一个数字的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)。
答案 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