2014-11-30 5 views
0

У меня есть данные по большому диапазону x. Теперь я хочу, чтобы ylim был автоматическим для указанного xlim. Также как «автомасштабирование» в gnuplot или PlotRange -> «Automatic» в математике.Как будет ylim быть автоматическим от данных для данного xlim в matplotlib?

+0

Возможный дубликат [Автоматическое масштабирование yl im и xlim в Matplotlib] (http://stackoverflow.com/questions/10984085/automatically-rescale-ylim-and-xlim-in-matplotlib) – sebix

ответ

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

Почему бы не использовать 'plt.relim'and' plt.autoscale_view'as в ответ, который вы связали в комментариях к вопросу? (-> http://stackoverflow.com/questions/10984085/automatically-rescale-ylim-and-xlim-in-matplotlib) – hitzg

+0

Потому что я не копирую решение оттуда. И это дубликат. – sebix

Смежные вопросы