Генерация точек на круге

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()

круг()

Другие вопросы по тегам