matplotlib之查缺补漏
大家好,今天来聊聊一些遗漏的matplotlib细节,通过查缺补漏的方式来结束这一版块的学习。以下是今天的学习内容:
1.标签与坐标轴重叠的解决方法
2.给坐标轴添加箭头
3.坐标标签的能见度问题
4.对数坐标轴
5.图中图
6.公式的插入
标签与坐标轴重叠的解决方法
对于这一问题,如果标签是纯数字,那么不必担心,matplotlib会自动隐藏一部分坐标标签数据来达到可观的效果,但是如果标签是文字,那么有时候就可能一团糟,比如...
这样的图简直能把像我这样有强迫症的人逼疯啊!!废话不多说了,开搞!下面给出两种解决方法,仅供参考
方法一:拓宽横轴
方法二:旋转标签
给坐标轴添加箭头
说实话,个人觉得这个没有太大的必要,不过在学习阶段,多琢磨还是好的,首先绘制一个没有箭头的坐标轴。
为了给坐标轴添加箭头,引入mpl_toolkits.axisartist,由名字就可以看出,它就是专攻坐标轴的。
不知道大家能不能看清楚x轴和y轴的箭头的差别,其中一个是实心的箭头,另一个是普通的箭头。
坐标标签的能见度问题
有些图的坐标标签或其他文字等会不可避免地被线条给挡住,遇到这种情况应该如何解决呢?
(ps:脑子有病吧,线条画那么粗干嘛?能吃?)
显然,这是由于线条在数字的上层,所以数字被挡住了,那么我们只要将数字移到线条的上层不就解决问题了吗?其实很简单,把plt.plot(x1,y1,linewidth=15)改为plt.plot(x1,y1,linewidth=15,zorder=1)就行。zorder参数就是用来控制它的层级的。
得到的结果如下:
那么问题又来了,如果我的线条是黑色的呢?比如
这下子你再怎么移上来都没用了吧(除了改变标签的颜色),我们只能换另外一种方法了:先给标签一个白色背景(为了显示标签),然后设置一个透明度(为了显示线条)就可以了。
简单解释以下第7行的[1:5],不知道读者会不会觉得应该是[0:4],如果ax.get_yticklabels()只是图中的标签的话,那么肯定就是[0:4],但其实不是,而是从-1.25到1.25,所以应该是[1:5]。
对数坐标轴
先给大家看一张图
如果不看上面的数据,你能看出B点的纵坐标其实是A点纵坐标的10000倍吗?我想应该看不出吧,出现这种情况的原因就是数据变化太快了,为了解决这一问题,应该使用对数纵坐标来减缓变化。
图中图
对于这一问题,我就不做过多解释了,大家注意百分比就行。下面给个示例吧。
公式的插入
插入公式需要熟悉LaTex语法,这个我也不懂,不过需要用到的时候上网查找就可以了。下面仅给出基本的语法
好了,matplotlib的学习就先告一段落了,接下来的计划是学习seaborn。
