在圆上生成点

Apo*_*llo 4 python matplotlib

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()
Run Code Online (Sandbox Code Playgroud)

我已经编写了上面的代码,在单位圆上随机绘制1000个点.但是,当我运行此代码时,由于某种原因它会绘制一个椭圆.为什么是这样?

在此输入图像描述

mgi*_*son 6

这是一个圆圈 - 问题是你的轴的纵横比不是1,所以当你绘制它时它看起来像一个椭圆形.要获得1的宽高比,您可以使用:

plt.axes().set_aspect('equal', 'datalim')  # before `plt.show()`
Run Code Online (Sandbox Code Playgroud)

这在演示中突出显示.