繁体   English   中英

对单个轴对象(XAxis 或 YAxis)设置限制

[英]Set limits on individual axis objects (XAxis or YAxis)

我有一个图,其中一些设置在 x 轴和 y 轴之间共享。 出于这个原因,我计划将此设置移至单独的功能。 通常各个轴的属性可以通过专用方法设置,例如AxesSubplot对象的AxesSubplot set_[xy]ticks, set_[xy]lim, ... 另一方面, [XY]Axis对象也存在相应的方法,例如ax.xaxis.set_ticks - 好吧,除了set_lim 这种方法不存在,我找不到等效的方法。 是否有原因它不存在于单个轴对象上,但有没有办法设置这些限制?

这是一些示例代码,说明了问题:

import matplotlib.pyplot as plt


def setup(axis, positions, labels):
    axis.grid()
    axis.set_ticks([positions[x] for x in labels])
    axis.set_ticklabels(labels)
    # axis.set_lim([min(positions.values()),  # 'set_lim' does not exist though
    #               max(positions.values())])


positions = dict(zip('abcdef', range(6)))

fig = plt.figure()
ax = fig.add_subplot()
setup(ax.xaxis, positions, list('ace'))
setup(ax.yaxis, positions, list('bdf'))
ax.set_xlim([0, 5])  # need to set the limits here
ax.set_ylim([0, 5])
plt.show()

axes.Axes.set_xlim的代码axes.Axes.set_xlim有 60 行,检查了很多与轴比例、单位、共享和自动缩放行为等相关的内容。特别是对于自动缩放,两个轴并不是完全独立的。 因此,这驻留在axes.Axes而不是axis.Axis

然而这不是问题。 每个Axis都知道其父Axes通过.axes属性。 ax.set_xlim(..)

ax.xaxis.axes.set_xlim(..)

我认为函数 set_view_interval (请参阅此处的文档)应该可以完成这项工作:

axis.set_view_interval(min(positions.values()), max(positions.values()))

在文档中,您还可以 在此处找到有关设置轴数据和轴视图限制的更多信息(数据和视图间隔部分)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM