2014-11-30 3 views
0

나는 x의 큰 범위에 걸쳐 데이터를 가지고있다. 이제 ylim이 지정된 xlim에 대해 자동으로 수행되기를 원합니다. gnuplot에서 'autoscale'또는 mathematica에서 PlotRange -> 'Automatic'과 같습니다.matplotlib의 주어진 xlim에 대한 데이터에서 ylim은 어떻게 자동으로 수행됩니까?

+0

[자동으로 크기 조정 가능 im 및 xlim Matplotlib] (http://stackoverflow.com/questions/10984085/automatically-rescale-ylim-and-xlim-in-matplotlib) – sebix

답변

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

또는 둘 다 일을 기능을 사용하기 :이 또한 주어진 x 값과 모든 제한을 당신을 위해 작동

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

원하는 :

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

'plt.relim'과'plt.autoscale_view'를 사용하지 않는 이유는 무엇입니까? 당신이 질문의 코멘트에 링크 된 대답에서? (-> http://stackoverflow.com/questions/10984085/automatically-rescale-ylim-and-xlim-in-matplotlib) – hitzg

+0

거기에서 솔루션을 복사하지 않기 때문에. 그리고 그것은 중복입니다. – sebix