matplotlib设置坐标轴标签和间距的实现
目录
- xlim、ylim
- xticks、yticks
- 总结
我们今天继续matplotlib作图教程。
在上周的文章当中我们介绍了如何通过xlabel和ylabel设置坐标轴的名称,以及这两个函数的花式设置方法,可以设置出各种各样的名称显示方法。今天我们来介绍介绍其他的设置。
xlim、ylim
我们首先来介绍坐标轴的范围,坐标轴的范围很好理解,有的时候我们产出的数据的范围可能并不是完全我们想要的。如果我们不对坐标轴的范围进行设置的话,那么matplotlib默认会按照我们数据的范围来自动选择它认为最合适的区间来展示所有的数据。
举一个很简单的例子,假设我们想要在-10到10的区间里画一张抛物线的图像。这个图像的绘制方法我想大家应该都已经非常熟悉了:
由于x的范围是-10到10,那么y对应的范围应该就是[0, 100]。这些应该都不难理解,但是假如我们虽然数据非常全面是[-10, 10]这个范围内的,但是我们仅仅想要展示[-3, 3]这个区间,那应该怎么办?这个时候我们就可以使用xlim这个函数来设置x轴的范围,但是需要注意的是,我们在调用xlim的时候只是限制了x轴的结果,并没有限制y轴。所以画出来y轴的范围还是之前数据的范围,这样看起来会显得有一点奇怪,图像会是这样的:
解决的办法也很简单,就是再设置ylim的范围,将ylim的范围也设置到刚好可以比较合适地展示数据。比如在这个例子当中,ylim设置成[0, 30]或者是[-5, 25]都非常合适。
关于xlim和ylim官方还提供一些其他的参数,大家感兴趣可以查阅相关文档,建议大家没必要浪费这个时间,因为实在是用不到。甚至连用到xlim和ylim的情况都不多。
xticks、yticks
如果说前面xlim和ylim看起来有一种好像有点用,但是又不知道什么时候能用上的话,那么这一段要介绍的xtick和ytick就属于非常有用,不容错过的那种。这也不是我吹,因为和这两个函数比起来前面介绍的xlim和ylim真的就只是个弟弟。
xlim能够设置的基本上只有坐标轴的范围,而xticks和yticks既可以设置范围也可以设置每个刻度之间的间距。还用刚才抛物线的例子举例,在刚才的例子当中,我们x轴的范围是[-10, 10]。在默认的图像当中,系统帮我们选择的间距是2.5,即每隔2.5画一个坐标点,一共画8个。
而通过xticks我们可以自己设置坐标点的间隔以及数量,比如假设我们想要x轴每间隔5画一个坐标点,我们可以这么来设置:
我们直接在xticks当中放入了一个list,最后我们画出来的图像的x轴就是根据这个list进行划分的。也就是说我们不仅可以定义坐标轴的范围,还可以定义它的间隔。有的时候,自动绘制出来的图像的范围以及间隔可能没有那么好,需要我们进行调整,这时候就需要用到xticks和yticks函数了。
除了设置间隔和范围之外,xticks还可以设置标签以及标签的旋转角度。我们同样来看一个例子,在这个例子当中,我们会把上图当中x轴的数字转成英文单词,并且将这些单词旋转30度。
我们生活当中经常看到的一种图表就是某公司的业绩销售表,或者是增长曲线表。这种表都有一个特点,就是它的x轴是月份,这样我们就可以很清楚地看到每个月的销售数据,可以对未来进行预期以及指引。在没有学会xticks函数用法之前,可能会觉得这是非常不容易的一件事,但有了xticks之后其实非常地简单:
现在如果老板让你去做一张月度数据报表,你应该知道怎么做了吧?可以不用再用Excel了,用matplotlib几行代码就搞定了。这也是现在各大培训班广告里吹嘘的内容,你看我已经免费教给你了。
总结
我们简单回顾一下今天介绍的内容,一个是用来限制坐标轴范围的xlim和ylim,另外一个是可以自定义整个坐标轴间隔以及范围,甚至还可以更换名称的xticks、yticks。从表面上来看xlim能做的事情xticks也都可以实现,但实际上这两者的应用场景其实是不同的,xlim的使用场景是当我们想要放大或者缩小图像的时候,使用xlim只需要传入上下界,而如果使用xticks则还需要指定间隔、生成一个list才可以,其实是有些冗余的操作。
所以这两者的应用有重叠的部分,但是应用场景其实还是不一样的。当然如果你想要偷懒只想学一个的话,那么xticks的确已经足够了。