前言
前几天在QQ群里发现有人问这样一个问题,使用Python的matplotlib库绘制图形时,函数 scatter()
绘制的点总是在 plot()
函数绘制的线下边,看起来样子很丑,大概就是下图这个样子,问有没有方法让点显示到线的上面。
看到这个问题一开始以为是绘制顺序的原因,调整 scatter()
函数和 plot()
函数的调用顺序并没有达到预想的效果,点还是在线的下面,原来一直没注意这个问题,是因为我一直把线和标注用的点使用了同一种颜色,所有看不出来是谁覆盖了谁,现在抛出这个问题居然让人有点不知所措,直觉上认定肯定有个属性可以设置这个显示顺序,但究竟是图的属性?坐标轴的属性?还是函数的参数呢?这个还需要查一查。
解决办法
最后经过一顿查找发现函数 scatter()
和 plot()
都有个参数 zorder
,这时候才恍然大悟,做游戏界面开发时常常使用这个参数来控制UI的层级,现在怎么突然忘了呢,赶紧设置一下发现与原来在游戏开发中的参数含义相同,zorder
这个整数越大,显示的时候越靠上,所以写了下面的测试代码:
1 | import numpy as np |
效果展示
这次终于正常了,因为scatter()
函数中的zorder
值较大,所以放到上面绘制,效果如下:
总结
- 帮助他人解决问题是一个自我提升的好机会
- 有很多我们认为很简单的事情,其实并不是我们想的那样