我只想了解基本参数及其具体功能-宽度,高度,角度,theta1,theta2。我遵循了官方文档,但我了解了中心是什么,但我不知道theta是什么1或2或角度或水平或垂直轴的长度意味着什么。 我尝试使用不同的数字对参数进行实验,但未能获得准确的结果。 我正在尝试在篮球场上创建三分线弧线
答案 0 :(得分:1)
Arc
类型是Ellipse
的子类,扩展为添加两个值theta1
和theta2
。 angle
和Ellipse
的行为Arc
相同,并确定绘制椭圆的角度。
from matplotlib import pyplot as plt
from matplotlib.patches import Ellipse
fig = plt.figure(figsize=(2,5))
ax = fig.add_subplot(1,1,1)
ax.set_ylim(0, 50)
ax.set_xlim(0, 20)
ax.axis('off')
a = Ellipse((10, 45), 10, 3, 0, color='red', lw=1)
ax.add_patch(a)
a = Ellipse((10, 40), 10, 3, 10, color='red', lw=1)
ax.add_patch(a)
a = Ellipse((10, 35), 10, 3, 20, color='red', lw=1)
ax.add_patch(a)
a = Ellipse((10, 30), 10, 3, 30, color='red', lw=1)
ax.add_patch(a)
for a in range(0, 360, 40):
a = Ellipse((10, 20), 10, 3, a, color='red', lw=1, fc='none')
ax.add_patch(a)
这会产生-
请注意,对于一个完美的圆(等于height
和width
的椭圆),这没有什么区别(因为圆是旋转对称的)。
from matplotlib import pyplot as plt
from matplotlib.patches import Ellipse
fig = plt.figure(figsize=(2,4))
ax = fig.add_subplot(1,1,1)
ax.set_ylim(0, 40)
ax.set_xlim(0, 20)
ax.axis('off')
a = Ellipse((10, 25), 10, 10, 0, color='red', lw=1)
ax.add_patch(a)
a = Ellipse((10, 10), 10, 10, 45, color='red', lw=1)
ax.add_patch(a)
两个圆圈都相同。
matplotlib.patches.Arc
的{{3}}解释说theta 1和2是—
theta1
,theta2
:float
,可选圆弧的开始和结束角度(以度为单位)。这些值是相对于角度的,例如。如果angle = 45,theta1 = 90,则绝对起始角度为135。默认theta1 = 0,theta2 = 360,即完整的椭圆。
关键说明是“默认theta1 = 0,theta2 = 360,即完整的椭圆”。 -这些参数用于绘制局部椭圆,以创建圆弧。 theta1
是开始绘制 的椭圆的角度(或在椭圆上的位置),theta2
是停止绘制的时间。请注意,椭圆的计算不受影响。
以下代码绘制了一系列弧线,这些弧线应使逻辑显而易见—
from matplotlib import pyplot as plt
from matplotlib.patches import Arc
fig = plt.figure(figsize=(2,5))
ax = fig.add_subplot(1,1,1)
ax.set_ylim(0, 50)
ax.set_xlim(0, 20)
ax.axis('off')
# A complete ellipse, using theta1=0, theta2=360.
a = Arc((10, 45), 10, 3, 0, 0, 360, color='red', lw=1)
ax.add_patch(a)
# Reduce theta2 to 350, last 10 deg of ellipse not drawn.
a = Arc((10, 40), 10, 3, 0, 0, 350, color='red', lw=1)
ax.add_patch(a)
# Rotate the ellipse (angle=90), theta1 & theta2 are relative to start angle & rotate too.
a = Arc((10, 30), 10, 3, 90, 0, 350, color='red', lw=1)
ax.add_patch(a)
# Rotate the ellipse (angle=180), as above.
a = Arc((10, 20), 10, 3, 180, 0, 350, color='red', lw=1)
ax.add_patch(a)
# Draw the top half of the ellipse (theta 0-180 deg).
a = Arc((10, 10), 10, 3, 0, 0, 180, color='red', lw=1)
ax.add_patch(a)
# Draw the bottom half of the ellipse (theta 180-360 deg).
a = Arc((10, 5), 10, 3, 0, 180, 360, color='red', lw=1)
ax.add_patch(a)
这将产生以下图像,上面绘制的弧线是从上到下。与代码中的注释进行比较以进行解释。