如何用Matplotlib填充两个同心圆之间的区域?
如何用Matplotlib填充同心圆之间的环形区域?
要实现两同心圆之间的环形纯色填充,最简洁高效的方式是使用Matplotlib的Wedge补丁(属于matplotlib.patches模块),它可以直接生成完整环形区域并设置填充色。以下是修改后的完整代码:
import matplotlib.pyplot as plt from matplotlib.patches import Wedge import numpy as np # 统一同心圆参数(两圆中心一致,简化重复定义) centro = (0, 0) raio_externo = 10 raio_interno = 5 # 创建画布与坐标轴 fig, ax = plt.subplots(figsize=(6, 6)) # 添加环形填充:Wedge参数为(中心x, 中心y, 内半径, 外半径, 起始角度, 结束角度) # 角度设为0到360即可生成完整环形 ring = Wedge(centro, raio_interno, raio_externo, 0, 360, color="#1f77b4") ax.add_patch(ring) # 可选:绘制两个圆的边界线条(与原代码效果保持一致) theta = np.linspace(0, 2 * np.pi, 100) x_externo = centro[0] + raio_externo * np.cos(theta) y_externo = centro[1] + raio_externo * np.sin(theta) x_interno = centro[0] + raio_interno * np.cos(theta) y_interno = centro[1] + raio_interno * np.sin(theta) ax.plot(x_externo, y_externo, color="C0") ax.plot(x_interno, y_interno, color="C0") # 保持坐标轴等比例,避免图形变形 ax.axis('equal') plt.show()
关键说明:
Wedge是Matplotlib专门用于创建扇形/环形的补丁类,当起始角度设为0、结束角度设为360时,会直接生成闭合的环形区域。- 如果不需要保留圆的边界线条,可以直接省略
plot相关代码,仅保留add_patch部分即可实现目标填充效果。 - 也可以通过
fill_between结合路径闭合实现,但Wedge的写法更直观、代码量更少。
内容的提问来源于stack exchange,提问作者Projetos Programação
相关产品推荐
相关产品推荐

