Python matplotlib에서 x 축과 y 축의 스케일을 균일화하는 방법은 무엇입니까?


128

정사각형 그래프에 선을 그리고 싶습니다.

의 비늘 x-axisy-axis동일해야합니다.

예를 들어 x는 0에서 10까지이며 화면에서 10cm입니다. y는 0에서 10까지의 범위 여야하며 10cm 여야합니다.

창 크기를 어지럽히더라도 사각형 모양을 유지해야합니다.

현재 내 그래프는 창 크기와 함께 조정됩니다.

이것을 어떻게 달성 할 수 있습니까?

최신 정보:

다음을 시도했지만 작동하지 않았습니다.

plt.xlim(-3, 3)
plt.ylim(-3, 3)
plt.axis('equal')

그것은 나를 위해 일하고 있습니다. 작동하지 않는 전체 코드 예제를 게시 할 수 있습니까? 작동하지 않는 것이 무엇인지 설명 할 수 있습니까? Samen 스케일 만 원하십니까? 아니면 같은 범위?
joris 2013-08-01

1
@joris 기본적으로 고정 된 SQUARE 그래프를 원합니다. 창을 최대화해도 SQUARE가 예약 되었으면합니다. 화면이 넓고 창을 최대화하면 그래프도 직사각형이됩니다. 나는 여전히 SQUARE되고 싶어
Sibbs 도박

다시 한 번 전체 코드 예제를 게시 할 수 있습니다. 주어진 대답이 그렇게해야하므로 사각형으로 유지하십시오. 너비 또는 높이를 유지하지 않고 모양을 유지합니다.
joris 2013-08-01

2
SO에서 다른 사람들과 상호 작용할 때 약간 덜 연마되도록 노력하십시오. 당신은 사람들의 친절에서 도움을 받고 있으므로 조금 덜 자격이 있습니다.
tacaswell

3D에, 당신은 약간의 추가 작업을 할 필요가 : stackoverflow.com/questions/13685386/...
트레버 보이드 스미스

답변:


179

이 작업을 수행하려면 API를 좀 더 자세히 살펴 봐야합니다.

from matplotlib import pyplot as plt
plt.plot(range(5))
plt.xlim(-3, 3)
plt.ylim(-3, 3)
plt.gca().set_aspect('equal', adjustable='box')
plt.draw()

set_aspect에 대한 문서


4
대박! 실제로 매력처럼 작동합니다. 당신은 내게 무엇을 말씀 해주십시오 수 plt.plot(range(5))plt.gca().set_aspect('equal', adjustable='box')당신이 괜찮다면, 어떻게? 또한이 없어도 plt.draw()플롯이 계속 표시됩니다. 그렇다면 그것의 용도는 무엇입니까?
Sibbs Gambling 2013 년

plot단지 표시하는 무언가가있다. 를 들어 set_aspect문서 링크를 참조하십시오. 는 draw바로 확인이 렌더링됩니다 확인하는 것입니다.
tacaswell 2013-08-02

1
플로팅 할 가짜 데이터가 있습니다 (직선으로 플로팅 했어야 함).
tacaswell 2013-08-02

1
@ perfectionm1ng 걱정 마세요, 당신이 무엇을 요구하는지 알아내는 데 시간이 걸렸습니다.
tacaswell 2013-08-02

1
제한을 정확히 지정하지 않고도이를 수행 할 수있는 방법이 있습니까? 두 축에 대해 동일한 스케일과 틱으로 정사각형 플롯을 얻는 간단한 명령이있을 것으로 예상했을 것입니다. 감사합니다
혼란 스러움

70
plt.axis('scaled')

나를 위해 잘 작동합니다.


또한 나를 위해 일했습니다. 제한 / 틱을 설정하기 전에이 옵션을 사용하십시오. 자동으로 크기가 조정됩니다.
Andrew

3
죄송합니다. plt.axis ( 'scaled')는 Python 3.7 및 matplotlib-matplotlib == 3.1.0에서 작동하지 않았습니다. 그러나 plt.axis ( 'square')는 작동했습니다!
rishi jain

19

다음과 같이 시도하십시오.

import pylab as p
p.plot(x,y)
p.axis('equal')
p.show()

이것은 내 시스템에서 작동합니다. 작업중인 코드의 일부를 보여줄 수 있습니까? 문제를 더 빨리 해결하는 데 도움이 될 수 있습니다.
Dman2

이것은 일반적으로 작동하지 않습니다. 축은 동일하지만 플로팅 창이 정사각형이 아닌 한 플롯은 정사각형이 아닙니다. Matplotlib 2.0으로 테스트
divenex 2017

P.axis('equal')같은 것 같습니다 P.gca().set_aspect('equal', adjustable='datalim'). 이면 adjustable='box'플롯이 정사각형이됩니다.
Evgeni Sergeev

나는 이것에서 정사각형 상자를 확실히 얻지 못합니다 .
Peter Drake

pylab은 지원 중단됨
eric

19

대한 설명서 를 참조하십시오 plt.axis(). 이:

plt.axis('equal')

원이 원형으로 보이도록 축의 한계를 변경하기 때문에 작동하지 않습니다. 당신이 원하는 것은 :

plt.axis('square')

이렇게하면 축이 동일한 정사각형 플롯이 생성됩니다.

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