2016-09-09 2 views
3
import random 
import math 
import matplotlib.pyplot as plt 


def circle(): 
    x = [] 
    y = [] 
    for i in range(0,1000): 
     angle = random.uniform(0,1)*(math.pi*2) 
     x.append(math.cos(angle)); 
     y.append(math.sin(angle)); 
    plt.scatter(x,y) 
    plt.show() 
circle() 

위의 코드를 작성하여 단위 원에 무작위로 1000 포인트를 그립니다. 그러나이 코드를 실행하면 어떤 이유로 타원을 그립니다. 왜 이런거야?원에 점 생성하기

enter image description here

답변

5

그것은 원이다 - 문제는 축의 가로 세로 비율은 당신이 그것을 그릴 때 1 그래서 타원형처럼 보이는되지 않는 것입니다. 1의 가로 세로 비율을 얻으려면, 당신은 사용할 수 있습니다

plt.axes().set_aspect('equal', 'datalim') # before `plt.show()` 

이것은 demo으로 강조 표시됩니다.

+0

나는 왜 이해하지 못한다 ... 1.5에서 1.5 축 사이에 원을 그리지 않는 이유는 무엇일까요? – Apollo

+0

축이 두 축에서 동일한 범위 (3 단위)에 걸쳐 있지만 캔버스가 x 축과 y 축에서 차지하는 실제 공간이 다릅니다. matplotlib에 명시 적으로 동일하게 지정해야합니다. – mgilson

+0

고맙습니다. – Apollo