【问题标题】:Matplotlib: set axis tight only to x or y axisMatplotlib:仅将轴设置为 x 或 y 轴
【发布时间】:2016-06-01 02:08:41
【问题描述】:

我的情节是这样的:

显然左右两边比较浪费空间,所以我设置了

plt.axis('tight')

但这给了我这样的情节:

xlim 现在看起来不错,但 ylim 太紧了,不适合剧情。

我想知道,我是否只能将 axis(tight) 设置为 x 轴?

所以情节可能看起来像这样:

当然有可能我可以手动完成

plt.gca().set_xlim(left=-10, right=360)

但恐怕这不是一个非常优雅的解决方案。

【问题讨论】:

  • 仍在尝试找出为什么他们在此处默认有奇怪的行为。

标签: python matplotlib


【解决方案1】:

您想使用 matplotlib.axes.Axes class 中的 matplotlib 的 autoscale 方法。

使用函数式 API,您可以使用紧密的 x 轴

plt.autoscale(enable=True, axis='x', tight=True)

或者如果您使用的是面向对象的 API,您会使用

ax = plt.gca()  # only to illustrate what `ax` is
ax.autoscale(enable=True, axis='x', tight=True)

为了完整起见,axis kwarg 可以采用'x''y''both',其中默认为'both'

【讨论】:

  • 一个小补充:我主要使用面向对象的API,autoscale其实是Axes类的一个方法。
  • 这似乎不适用于 y 轴。我试过axis='y',没有任何变化。
  • @StevenC.Howell 在 Linux(Python 2)和 Windows(Python 3、32/64 位版本)上使用 matplotlib 最高版本 2.2.2 的 y 轴工作正常。
【解决方案2】:

我只是将以下内容放在我知道我希望我的 xlims 拥抱我的数据的那些脚本的开头:

import matplotlib.pyplot as plt
plt.rcParams['axes.xmargin'] = 0

如果我决定在同一个脚本中为单个绘图添加一些空白缓冲区,我会手动执行:

plt.xlim(lower_limit, upper_limit)

虽然接受的答案有效,而且我使用了一段时间,但我改用了这种策略,因为每个脚本我只需要记住一次。

【讨论】:

    猜你喜欢
    • 2012-05-13
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多