如何根据matplotlib中给定xlim的数据自动获取?

时间:2014-11-30 00:59:25

标签: matplotlib limit axis

我有大跨度x的数据。现在我希望ylim对于指定的xlim是自动的。就像' autoscale'在gnuplot或PlotRange->'自动'在mathematica。

1 个答案:

答案 0 :(得分:1)

使用该范围的minmax值:

>>> 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])