matplotlib에서 y 축 제한 설정


416

matplotlib에서 y 축 제한을 설정하는 데 도움이 필요합니다. 내가 시도한 코드는 다음과 같습니다.

import matplotlib.pyplot as plt

plt.figure(1, figsize = (8.5,11))
plt.suptitle('plot title')
ax = []
aPlot = plt.subplot(321, axisbg = 'w', title = "Year 1")
ax.append(aPlot)
plt.plot(paramValues,plotDataPrice[0], color = '#340B8C', 
     marker = 'o', ms = 5, mfc = '#EB1717')
plt.xticks(paramValues)
plt.ylabel('Average Price')
plt.xlabel('Mark-up')
plt.grid(True)
plt.ylim((25,250))

이 플롯에 대한 데이터를 사용하면 y 축 제한이 20과 200이됩니다. 그러나 제한이 20과 250이 필요합니다.


1
plt.show()줄거리를 표시하기 위해 끝에 추가하면 Matplotlib 1.0.0에서 작동합니다 . 어떤 버전과 어떤 백엔드를 사용하고 있습니까?
Tamás

14
Matplotlib 0.98.5.2, Python 2.6.2로 나를 위해 일하고 있습니다. 난 둘 다 시도 plt.ylim((25,250))하고 plt.ylim(ymax = 250, ymin = 25). Agg백엔드를 사용하고 있습니다.
Manoj Govindan

1
둘 다 고마워 PDF 백엔드와 함께 작동합니까?
Curious2learn

1
참고 : axisbg이제 더 이상 사용되지 않습니다
SherylHohman

답변:


616

이 시도 . 서브 플로트에서도 작동합니다.

axes = plt.gca()
axes.set_xlim([xmin,xmax])
axes.set_ylim([ymin,ymax])

201
BTW이 바보 약어 수단 "인 g의 등은 C urrent XES".
Lenar Hoyt

32
당신은 또한 하나 개의 값 설정할 수 있습니다 None하기 matplotlib로 계산 잎, 예를axes.set_ylim([ymin,None])
linqu

129

귀하의 코드는 저에게도 효과적입니다. 그러나 다른 해결 방법은 플롯의 축을 얻은 다음 y 값만 변경하는 것입니다.

x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,25,250))


1
x1과 x2 None을 설정하면됩니다.
Hielke Walinga

78

matplotlib.pyplot.axis를 사용하여 축 범위를 직접 설정하는 것이 가능합니다.

matplotlib.pyplot.axis

from matplotlib import pyplot as plt
plt.axis([0, 10, 0, 20])

0,10은 x 축 범위입니다. 0,20은 y 축 범위입니다.

또는 matplotlib.pyplot.xlim 또는 matplotlib.pyplot.ylim을 사용할 수도 있습니다.

matplotlib.pyplot.ylim

plt.ylim(-2, 2)
plt.xlim(0,10)

24

객체를 인스턴스화 matplotlib.pyplot.axes하고 호출 할 수 있습니다 set_ylim(). 다음과 같습니다.

import matplotlib.pyplot as plt
axes = plt.axes()
axes.set_ylim([0, 1])

16

이것은 적어도 matplotlib 버전 2.2.2에서 작동했습니다.

plt.axis([None, None, 0, 100])

아마도 이것은 xmin 및 ymax 등을 설정하는 좋은 방법 일 것입니다.


14

@Hima의 답변에 추가하려면 현재 x 또는 y 제한을 수정하려는 경우 다음을 사용할 수 있습니다.

import numpy as np # you probably alredy do this so no extra overhead
fig, axes = plt.subplot()
axes.plot(data[:,0], data[:,1])
xlim = axes.get_xlim()
# example of how to zoomout by a factor of 0.1
factor = 0.1 
new_xlim = (xlim[0] + xlim[1])/2 + np.array((-0.5, 0.5)) * (xlim[1] - xlim[0]) * (1 + factor) 
axes.set_xlim(new_xlim)

기본 플롯 설정에서 약간 축소하거나 확대하려는 경우 특히 유용합니다.


7

이 작동합니다. Tamás 및 Manoj Govindan과 같은 코드가 저에게 효과적입니다. Matplotlib를 업데이트하려고 시도한 것 같습니다. Matplotlib를 업데이트 할 수없는 경우 (예 : 관리 권한이 충분하지 않은 경우) 다른 백엔드를 사용하면 matplotlib.use()도움 이 될 수 있습니다.


확인해 주셔서 감사합니다! pdf 백엔드 ( matplotlib.use('PDF'))를 사용하고 있습니다. 최신 버전의 Enthought Python Distribution과 함께 제공되는 버전을 사용하고 있습니다. PDF 백엔드와 작동하는지 확인할 수 있습니다. 감사!
Curious2learn

Mac OS X에서 PDF 백엔드와 함께 작동합니다. 실제로 출력 파일이 plt.savefig()?
Eric O Lebigot

나는 문제를 깨달았다. 내가 꺼내 경우 aPlot =에서 plt.subplot라인 너무 나를 위해 작동합니다. 서브 플롯을 이와 같은 변수에 할당하는 경우 좌표축 제한을 설정하는 다른 방법을 사용해야합니다. 그게 사실입니까?
Curious2learn

1
내가 아는 plt.ylim()한 현재 축에 제한을 적용합니다 plt.subplot(). 또한 plt.subplot()반환되는 축이 어떻게 사용되는지에 대한 관심 (변수에 넣거나 넣지 않는 등)을 믿을 수 없습니다 . 그래서 나는 그것이 작동해야한다고 말하고 싶습니다. 내 컴퓨터에서 작동합니다.
Eric O Lebigot

6

미세 조정을 위해. 축의 경계 중 하나만 설정하고 다른 경계를 변경하지 않으려면 다음 문 중 하나 이상을 선택할 수 있습니다.

plt.xlim(right=xmax) #xmax is your value
plt.xlim(left=xmin) #xmin is your value
plt.ylim(top=ymax) #ymax is your value
plt.ylim(bottom=ymin) #ymin is your value

xlimylim 에 대한 설명서를 살펴보십시오


0

문제가있는 코드 아래 코드로 생성 된 축이 첫 번째 축과 범위를 공유 하는 경우 해당 축의 마지막 플롯 이후 범위를 설정해야합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.