PyPlot의 역 Y 축


265

임의의 x, y 좌표를 가진 산점도 그래프가 있습니다. 현재 Y 축은 0에서 시작하여 최대 값까지 올라갑니다. Y 축이 최대 값에서 시작하여 0까지 올라 가기를 원합니다.

points = [(10,5), (5,11), (24,13), (7,8)]    
x_arr = []
y_arr = []
for x,y in points:
    x_arr.append(x)
    y_arr.append(y)
plt.scatter(x_arr,y_arr)

답변:


557

이것을 더욱 간단하게하는 새로운 API가 있습니다.

plt.gca().invert_xaxis()

그리고 / 또는

plt.gca().invert_yaxis()

49
축을 반전시키기 전에 축 제한을 설정 해야합니다. 그렇지 않으면 축이 다시 반전되지 않습니다.
TheBigH

55

DisplacedAussie 의 대답은 정확하지만 일반적으로 더 짧은 방법은 문제의 단일 축을 반전시키는 것입니다.

plt.scatter(x_arr, y_arr)
ax = plt.gca()
ax.set_ylim(ax.get_ylim()[::-1])

여기서 gca()함수는 현재 Axes 인스턴스를 반환 [::-1]하고 목록을 반대로 바꿉니다.


3
그것은 나에게 더 나은 대답처럼 보입니다. :)
DisplacedAussie

18

사용이 matplotlib.pyplot.axis ()

axis([xmin, xmax, ymin, ymax])

그래서 당신은 끝에 다음과 같은 것을 추가 할 수 있습니다 :

plt.axis([min(x_arr), max(x_arr), max(y_arr), 0])

극단적 인 점이 경계에 있지 않도록 양쪽 끝에 패딩을 원할 수도 있습니다.


이것은 매번 뒤집지 않고 방향을 수정한다는 처음 두 가지 대답보다 이점이 있습니다 (루프에서 호출 해야하는 경우 문제입니다).
Bas Swinckels

16

ipython pylab모드 에 있다면

plt.gca().invert_yaxis()
show()

show()그것이 현재의 모습을 업데이트하기 위해 필요합니다.


9

산점도의 좌표축 객체에 의해 노출 된 함수를 사용할 수도 있습니다

scatter = plt.scatter(x, y)
ax = scatter.axes
ax.invert_xaxis()
ax.invert_yaxis()

8

위에서 설명한 것과 비슷한 다른 방법 plt.ylim은 예를 들어 사용하는 것 입니다.

plt.ylim(max(y_array), min(y_array))

이 방법은 Y1 및 / 또는 Y2에서 여러 데이터 세트를 합성하려고 할 때 효과적입니다.


3

ylim ()을 사용하는 것이 목적에 가장 적합한 방법 일 수 있습니다.

xValues = list(range(10))
quads = [x** 2 for x in xValues]
plt.ylim(max(quads), 0)
plt.plot(xValues, quads)

결과 :여기에 이미지 설명을 입력하십시오


2

또는 matplotlib.pyplot.axis () 함수를 사용하여 플롯 축을 반전시킬 수 있습니다

ax = matplotlib.pyplot.axis()
matplotlib.pyplot.axis((ax[0],ax[1],ax[3],ax[2]))

또는 X 축만 반전 시키려면

matplotlib.pyplot.axis((ax[1],ax[0],ax[2],ax[3]))

실제로 두 축을 반전시킬 수 있습니다.

matplotlib.pyplot.axis((ax[1],ax[0],ax[3],ax[2]))

0

matplotlib를 사용하는 경우 다음을 시도 할 수 있습니다. matplotlib.pyplot.xlim(l, r) matplotlib.pyplot.ylim(b, t)

이 두 선은 각각 x 및 y 축의 한계를 설정합니다. x 축의 경우 첫 번째 인수 l은 가장 왼쪽 값을 설정하고 두 번째 인수 r은 가장 오른쪽 값을 설정합니다. y 축의 경우 첫 번째 인수 b는 가장 낮은 값을 설정하고 두 번째 인수 t는 가장 높은 값을 설정합니다.

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