如何在Matplotlib中隐藏自定义标记后方的折线避免二者重叠?
问题原因
出现该问题是因为Matplotlib默认配置中,折线的图层优先级(zorder默认值)高于散点标记,即使先绘制折线、后绘制散点,折线依然会显示在散点上方,穿过标记。
解决方法
通过zorder参数显式控制图层顺序即可:zorder数值越大,元素层级越靠前,将散点标记的zorder设置为比折线更高的数值即可让标记覆盖在折线之上。
修改后的参考代码:
import matplotlib.pyplot as plt values = [i for i in range(3)] # 折线设置较低的zorder plt.plot(values, values, label="line", zorder=2) # 散点设置更高的zorder,确保显示在上方 plt.scatter(values, values, marker=u"$\u2299$", s=500, label="marker", zorder=3) plt.legend() plt.show()
如果仍能看到折线从标记中心的小圆点缝隙透出,可以额外给散点添加和画布背景同色的边缘,进一步遮挡下层折线:
plt.scatter(values, values, marker=u"$\u2299$", s=500, label="marker", zorder=3, linewidth=4, edgecolor='white')
内容的提问来源于stack exchange,提问作者t0d4
相关产品推荐
相关产品推荐

