1.问题描述 在屏幕上绘制一个空心的圆。 2.问题分析 绘制圆的方法很多,我们可以根据圆的方程来进行绘制。圆的方 程有标准方程和参数方程,这里采用圆的参数方程来绘制圆。 3.算法设计 圆的参数方程如下:?
?
其中r表示圆的半径,圆心在坐标原点(0,0)上。如果圆心不在坐标 原点(0,0)上,而在点(a,b)上,那么就相当于将圆心在(0,0)上的圆平移到 圆心为(a,b)上,其原理图如图11.9所示。
?
4.完整的程序 根据上面的分析,编写程序如下:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @author : liuhefei
# @desc: 绘制圆形
import numpy as np
import matplotlib.pyplot as plt
if __name__ == "__main__":
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用于正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
# 圆半径
r = 2.0
# 圆心坐标
a , b = (0. , 0.)
# 参数方程
Circle = np.arange(0, 2*np.pi, 0.01)
x = a + r * np.cos(Circle)
y = b + r * np.sin(Circle)
fig = plt.figure()
axes = fig.add_subplot(111)
axes.plot(x, y)
axes.axis('equal')
plt.title("圆形")
plt.show()
?5.运行结果 在PyCharm下运行程序,结果如图11.10所示。
6.拓展训练 实现函数y=x 2 -2x+1的图形与圆的图形叠加显示。 完整的代码如下:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @author : liuhefei
# @desc: 绘制一元二次方程曲线和圆形
import numpy as np
import matplotlib.pyplot as plt
if __name__ == "__main__":
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用于正常显示中文标签
用来正常显示负号
plt.rcParams['axes.unicode_minus'] =False # 用来正常显示负号
x = y = np.arange(-8, 8, 0.1)
x, y = np.meshgrid(x, y)
# 绘制x2 + y2 = 25 的圆形
plt.contour(x, y, x ** 2 + y ** 2, [25])
# 一元二次方程 y = x2 - 2x + 1
x1 = np.linspace(-3, 3, 50)
print(x1)
y1 = x1 ** 2
plt.plot(x1, y1, linewidth=4) # 设置线宽
plt.plot(x1, y1, 'g') # 设置线条为绿色
plt.title("一元二次方程曲线与圆形")
plt.axis('scaled')
plt.show()
?在PyCharm下运行程序,结果如图11.11所示。
?
|