同一figure中先绘plot后绘scatter,散点仍被线条遮挡问题求助
解决散点被水平线遮挡的问题
嘿,这个小坑我之前踩过!核心原因就是Matplotlib的图层渲染顺序在搞怪——每个绘图元素都有个zorder属性,数值越大,就越靠上层显示。你现在遇到的情况,应该是默认情况下plot()绘制的线条zorder比scatter()的更高(不同版本的默认值可能有差异),导致后画的散点反而被压在了下面。
给你两个简单直接的解决方案:
方案1:给散点设置更高的zorder
在调用scatter()的时候,手动指定一个比线条更高的zorder值,比如:
# 先绘制y=1的水平线 ax.plot([x_start, x_end], [1.0, 1.0], color='red', linewidth=2) # 绘制散点时设置zorder为3(比plot默认的1更高) ax.scatter(x_data, ratio_data, color='black', zorder=3)
方案2:给水平线设置更低的zorder
反过来,给plot()的线条设置一个更低的zorder,让散点自然在上方:
# 水平线设置zorder为1 ax.plot([x_start, x_end], [1.0, 1.0], color='red', linewidth=2, zorder=1) # 散点默认zorder是2,会自动在上方 ax.scatter(x_data, ratio_data, color='black')
要是你还有其他元素需要调整显示顺序,都可以通过zorder参数来控制,数值越大越靠前。这样调整后,黑色散点就能清晰地显示在红色水平线上面啦!
内容的提问来源于stack exchange,提问作者Suzanne Rosenzweig
相关产品推荐
相关产品推荐

