You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Matplotlib中隐藏填充圆形区域内的底层虚线?

问题原因

matplotlib中不同绘图元素有默认的层级(zorder)优先级:plt.plot()绘制的线条默认zorder值为2,PatchCollection生成的图形集合默认zorder值为1,线条层级更高就会显示在圆形上方,出现圆形透出虚线的视觉效果。另外原代码缺少matplotlib模块的直接导入语句,运行时会触发名称错误。

修复方案

有两种可选修改方式,任选其一即可实现圆形遮挡虚线的效果:

  1. 上调圆形集合的层级:创建PatchCollection时新增zorder=3参数,将圆形层级调整到线条上方,默认填充透明度为1无需额外设置
  2. 下调虚线的层级:绘制两条虚线时添加zorder=1参数,让线条层级低于圆形

核心修改代码(方案1):

# 原代码行
coll = matplotlib.collections.PatchCollection(patches,facecolors='red')
# 修改为
coll = matplotlib.collections.PatchCollection(patches, facecolors='red', zorder=3)
完整可运行代码
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(12, 12))
matplotlib.rcParams.update({'font.size': 10, 'font.family': 'serif'})
axes = fig.add_subplot(1 ,1 ,1, aspect=1)
axes.set_xlabel("X Position (m)")
axes.set_ylabel("Y Position (m)")

plt.plot([1900e-6,1900e-6], [0,3060e-6], '--',color='black')
plt.plot([2000e-6,2000e-6], [0,3060e-6], '--',color='black')
    
plt.xlim(0,4060e-6)
plt.ylim(0,3060e-6)

Xcor=np.array([2000e-6,2000e-6])
Ycor=np.array([1000e-6,2500e-6])
Rcor=np.array([547e-6, 447e-6])
            
C=np.vstack((Xcor,Ycor))
C=np.transpose(C)
patches = [plt.Circle(center, size) for center, size in zip(C, Rcor)]
# 新增zorder参数调整圆形层级
coll = matplotlib.collections.PatchCollection(patches,facecolors='red', zorder=3)
axes.add_collection(coll)
plt.show()

内容的提问来源于stack exchange,提问作者SIMRANDEEP BAHAL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 16:27:04