如何避免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
相关产品推荐
相关产品推荐

