matplotlib画圆

首先需要导入所用到的第三方库

from matplotlib import pyplot as plt
import numpy as np

“”"
给定圆心和半径,画圆
r :半径
x,y:圆心的坐标
“”"

def pint(r,x,y):
    plt.figure()    # 创建一个空白窗体
    plt.title('Circle')
    plt.xlabel('x')
    plt.ylabel('y')
    # 点的横坐标为a
    a = np.arange(x-r,x+r,0.000001)
    # 点的纵坐标为b
    b = np.sqrt(np.power(r,2)-np.power((a-x),2))+y
    plt.plot(a,b,color='r',linestyle='-')
    plt.plot(a,-b,color='r',linestyle='-')
    plt.scatter(0,0,c='b',marker='o')
    plt.grid(True)
    plt.show()
      
pint(2,0,0)

由圆心和半径确定圆上的每一个点的x的坐标

  a = np.arange(x-r,x+r,0.000001)

即x的范围在圆心坐标的x坐标加减半径内
matplotlib画圆_第1张图片

面向对象编程实例化对象画圆

  class Circle:
    r = 0 # 半径
    x,y = (0,0) # 圆心
    # 构造函数,初始化赋值
    def __init__(self,r1,m,n):
        self.r = r1
        self.x = m 
        self.y = n
    # 方法,画圆
    def pint(self):
        plt.figure()    # 创建一个空白窗体
        plt.title('Circle')
        plt.xlabel('x')
        plt.ylabel('y')
        # 点的横坐标为a
        a = np.arange(-2*np.pi,2*np.pi,0.00001)
        # 点的纵坐标为b
        b = np.sqrt(np.power(self.r,2)-np.power((a-self.x),2))+self.y
        plt.plot(a,b,color='r',linestyle='-')
        plt.plot(a,-b,color='r',linestyle='-')
        plt.scatter(self.x,self.y,c='b',marker='o')
        plt.axis([-4,4,-4,4])
        plt.grid(True)
        plt.show()
        

r = 2
x,y = (0,0)
y = Circle(r,x,y)   # 实例化一个对象
y.pint()        # 调用该对象的方法进行画圆

此处用的是

a = np.arange(-2*np.pi,2*np.pi,0.00001)
b = np.sqrt(np.power(self.r,2)-np.power((a-self.x),2))+self.y

圆的基本方程为:(x-x0)^2 + (y-y0)^2 =r^2 ,(x0,y0)为圆的圆心
已知x求y,则转换成b变量的式子

matplotlib画圆_第2张图片

还可以用sin和cos来画圆

点的横坐标

a_x = np.arange(0,2*np.pi,0.01)
a = x+r*np.cos(a_x)
b = y+r*np.sin(a_x)
plt.plot(a,b,coloe='r',linestyle='-'
plt.plot(a,-b,color='r',linestyle='-'

matplotlib画圆_第3张图片
想象一下,以该圆的左下角为原点,向右向上画x,y轴,则

x = x0+r*cosα
y = y0+r*sinα
注意

有的时候,坐标轴的横纵坐标尺度不一致,导致圆变的有点椭,可以采用matplotlib中的xlim和ylim来改变坐标轴的刻度

plt.xlim(-4,4)
plt.ylim(-4,4)

matplotlib画圆_第4张图片
但有的时候还是看起来不那么的圆,如有妙招或有误地方欢迎评论,大家一起学习!

你可能感兴趣的:(画圆,matplotlib,坐标轴,sin,圆的及本公式)