【发布时间】:2014-11-30 00:59:25
【问题描述】:
我有大跨度 x 的数据。现在我希望 ylim 对于指定的 xlim 是自动的。就像 gnuplot 中的“自动缩放”或数学中的 PlotRange->“自动”。
【问题讨论】:
标签: matplotlib limit axis
我有大跨度 x 的数据。现在我希望 ylim 对于指定的 xlim 是自动的。就像 gnuplot 中的“自动缩放”或数学中的 PlotRange->“自动”。
【问题讨论】:
标签: matplotlib limit axis
对该范围使用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/…)