Python Matplotlib如何规范绘制部分圆形(圆弧)
Matplotlib 绘制指定角度圆弧的规范实现
不要用同色图形遮挡的取巧方案,matplotlib 内置了专门用于绘制圆弧的Arc类,属于matplotlib.patches模块,天生支持直接指定圆弧的角度范围,不需要额外遮挡操作,是官方推荐的标准实现方式。
Arc的核心参数和你之前用的Circle类逻辑基本对齐,针对正圆圆弧的场景,核心参数说明如下:
xy:圆弧对应的圆心坐标,和Circle的圆心参数完全一致width/height:圆弧对应完整正圆的宽、高,正圆场景下两个值相等,均为2倍半径(半径为1时两个参数都传2即可)angle:整个圆弧的旋转角度,不需要旋转时传0theta1:圆弧起始角度,单位为度,以x轴正方向为0度,沿逆时针方向递增theta2:圆弧终止角度,单位规则和theta1一致- 颜色、线宽、线型等样式参数的用法和Circle完全相同
你可以直接把之前代码里的Circle替换成Arc实现需求,参考代码如下(示例为绘制30度到210度范围的圆弧,你可以自行修改theta1、theta2的值调整圆弧范围):
import matplotlib.pyplot as plt from matplotlib.patches import Arc plt.figure() ax = plt.gca() # 直接生成指定角度范围的圆弧 arc = Arc( xy=(1, 0), width=2, height=2, angle=0, theta1=30, theta2=210, color='r' ) ax.add_patch(arc) # 保持坐标轴等比例,避免圆弧拉伸变形 ax.set_aspect('equal', adjustable='box') # 保持和之前一致的坐标轴显示范围 plt.xlim([-0.5,2.5]) plt.ylim([-1.5, 1.5]) plt.show()
几个使用注意点:
Arc默认只绘制弧线、无填充,不需要额外设置fill=None- 如果需要绘制顺时针方向的角度区间,直接换算成逆时针对应的角度值即可,比如要画从0度顺时针转到90度的弧,设置
theta1=270、theta2=0就能实现 - 只要保证
width和height相等、坐标轴设置了等比例,绘制出来的圆弧就是正圆的一部分,不会出现椭圆变形的问题
内容的提问来源于stack exchange,提问作者Mitchell van Zuylen
相关产品推荐
相关产品推荐

