【问题标题】:Use matplotlib Axes autoscaling without plotting anything使用 matplotlib 轴自动缩放而不绘制任何内容
【发布时间】:2015-06-02 19:02:53
【问题描述】:

matplotlib 根据您提供的数据很好地选择了轴限制。

例如:

import matplotlib.pyplot as plt
import numpy as np
#%matplotlib inline

np.random.seed(0)
y = np.random.normal(size=37, loc=2, scale=1.5)
fig, (ax1, ax2) = plt.subplots(ncols=2)
ax1.plot(y)
ax2.plot(y * 328)
fig.tight_layout()

结果:

两个坐标轴都根据数据的范围和数量级进行缩放。

问题

我如何知道这些限制是什么,或者甚至将它们应用于现有的 Axes 对象而不实际在其上绘制任何东西?

ax.update_datalim 看起来很有希望,但似乎没有达到我的预期:

x = np.array([0] * y.shape[0])
fig, ax = plt.subplots()
ax.update_datalim(list(zip(x, y)), updatex=False)

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    我想这可能就是您要找的东西?不确定您是要更新 x 轴还是只更新 y 轴限制而不进行绘图。

    np.random.seed(0)
    y = np.random.normal(size=37, loc=2, scale=1.5)
    fig, (ax1, ax2) = plt.subplots(ncols=2)
    x = np.array([0] * y.shape[0])
    ax1_lim = ((0, min(y)), (len(x), max(y)))
    ax2_lim = ((0, min(y) * 328), (len(x), max(y) * 328))
    ax1.update_datalim(ax1_lim)
    ax2.update_datalim(ax2_lim)
    ax1.autoscale()
    ax2.autoscale()
    

    【讨论】:

    • 啊,我错过了对autoscale 的调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多