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

如何避免fillstyle='None'时Matplotlib绘图中线条穿过标记点?

解决Matplotlib中线条穿过标记点的问题

我希望用Matplotlib复刻下图:
目标绘图

我尝试了以下代码:

plt.plot(x, y, color='red', fillstyle='none', marker="*", markersize=10)

但遇到的问题是线条会穿过标记点,想解决这个问题,请问有什么可行方法?


可行解决方法

  • 分开绘制线条与标记点
    先单独绘制不带标记的线条,再绘制不带线条的标记点,让标记点覆盖在线条上方,彻底避免线条穿过标记。示例代码:

    # 绘制基础线条
    plt.plot(x, y, color='red')
    # 绘制空心星型标记点,s参数对应markersize的面积(markersize=10对应s≈100)
    plt.scatter(x, y, marker="*", s=100, color='red', facecolors='none')
    
  • 调整图层层级(zorder)
    如果不想分开绘制,可通过设置zorder参数提升标记点的图层层级,确保标记点显示在线条上方。示例代码:

    plt.plot(x, y, color='red', marker="*", markersize=10,
             fillstyle='none', zorder=2)
    # zorder值越大图层越靠上,默认线条与标记层级相同,设置更高数值即可让标记覆盖线条
    

推荐第一种方法,能精准还原目标图的视觉效果,确保标记点完全遮挡下方的线条部分。

内容的提问来源于stack exchange,提问作者Umberto Cappellazzo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:35:01