【问题标题】:How would ylim be automatic from data for a given xlim in matplotlib?ylim 如何从 matplotlib 中给定 xlim 的数据中自动获取?
【发布时间】:2014-11-30 00:59:25
【问题描述】:

我有大跨度 x 的数据。现在我希望 ylim 对于指定的 xlim 是自动的。就像 gnuplot 中的“自动缩放”或数学中的 PlotRange->“自动”。

【问题讨论】:

标签: matplotlib limit axis


【解决方案1】:

对该范围使用min 和max 值:

>>> data = np.random.random((1000,))
>>> data.shape
(1000,)
>>> plt.plot(data)
[<matplotlib.lines.Line2D object at 0x37b7f50>]
>>> plt.ion()
>>> plt.show()
>>> plt.xlim(450,470)
>>> plt.ylim(np.min(data[450:470+1]), np.max(data[450:470+1]))

或者同时使用一个函数:

def plot_autolimit(x, y=None, limit=None):
    if y is None:
        plt.plot(x)
    else:
        plt.plot(x, y)
    if limit is not None:
        plt.xlim(limit)
        if y is None:
            plt.ylim(np.min(x[limit[0]:limit[1]+1]), np.max(x[limit[0]:limit[1]+1]))
        else:
            plt.ylim(np.min(y[limit[0]:limit[1]+1]), np.max(y[limit[0]:limit[1]+1]))

这也适用于给定的x 值和您想要的所有限制:

plot_autolimit(np.arange(data.size), data, limit=[3,49])

【讨论】:

  • 为什么不使用plt.relim和plt.autoscale_view,正如您在问题的cmets中链接的答案中所建议的那样? (--> stackoverflow.com/questions/10984085/…)
  • 因为我没有从那里复制解决方案。而且是重复的。
猜你喜欢
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
相关资源
最近更新 更多