使用椭圆绘制圆
- 一般而言,我们可以使用类Ellipse绘制圆,但是不可以使用类Circle绘制椭圆。
- 因为我们使用类Ellipse绘制圆,只需要保证参数width和height的取值相同而且刻度线的变化量相同即可完成圆的绘制任务。如果参数width和height的取值相同,但是刻度线的变化量不一致,则也可以使用类Circle完成绘制椭圆的任务。
- 我们使用类Circle绘制椭圆,如果参数width和height的取值不相同,就无法完成使用类Circle绘制椭圆的工作。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Circle, Ellipse
# 通过设置subplots()中的参数subplot_kw={"aspect":"equal"}使坐标轴的刻度线的变化量相同
fig, ax = plt.subplots(1, 1, subplot_kw={"aspect":"equal"})
# 设置圆和椭圆的中心位置相同。圆的半径是1,椭圆的宽度和长度都是2
circle = Circle((2, 2), radius=1)
# 通过推导列表生成4个逆时针旋转角度的列表ellipse
angles = np.linspace(0, 135, 4)
ellipse = [Ellipse((2, 2), 2, 2, a) for a in angles]
# 使用内置函数append()将实例circle添加到推导列表ellipse中
ellipse.append(circle)
# 将列表Ellipse赋值给变量polygon
polygon = ellipse
for pln in polygon:
ax.add_patch(pln)
pln.set_alpha(np.random.rand(1))
pln.set_color(np.random.rand(3))
ax.axis([0, 4, 0, 4])
ax.set_xticks(np.arange(0, 5, 1))
ax.set_yticks(np.arange(0, 5, 1))
plt.show()