Генерация точек на круге
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 точек случайным образом на единичном круге. Однако, когда я запускаю этот код, он почему-то рисует овал. Почему это?
2 ответа
Решение
Это круг - проблема в том, что соотношение сторон ваших осей не равно 1, поэтому при построении графика оно выглядит как овал. Чтобы получить соотношение сторон 1, вы можете использовать:
plt.axes().set_aspect('equal', 'datalim') # before `plt.show()`
Это выделено в демонстрации.
Вы можете просто установить размер фигуры:
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.figure(figsize=(5,5))
plt.scatter(x,y)
plt.show()
круг()