【python Matplotlib不同区域设置不同背景色】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

利用python中的Matplotlib画图,有时候我们需要使不同的区域设置不同的背景色,然而,目前已有的函数axvspan和axhspan,只能设定矩形区域,但是若需要设定三角区域或者不规则区域该怎么做呢?找了一圈,只找的支撑矩形区域着色的。


一、axvspan()和axhspan()用法

示例:

axP.axvspan(xmin, xmax, ymin, ymax, facecolor='r', alpha=0.1)

其中,xmin和xmax表示需要设置颜色的x轴范围,指的是真实的长度,而通常ymin和ymax不填,其表示y轴的比例,一般ymin是0,ymax是1。facecolor表示颜色,alpha为透明度。如下即为的结果:

axP.axvspan(0, 1, facecolor='r', alpha=0.1)

在这里插入图片描述
若设置ymin和ymax为0.5,0.9时:

axP.axvspan(0, 1, 0.5, 0.9, facecolor='r', alpha=0.1)

在这里插入图片描述
这样的话,只能实现矩形区域的着色。那如果要实现矩形区域,该如何呢?可以借助微积分的思想,把三角形分解成很多小矩形分别着色。

二、实现三角形区域着色

根据坐标刻度,取分解的矩形个数,分的越小越好,但是速度可能慢些,这里只取1000个矩形就可以了。
代码如下(示例):

axP.axvspan(AL + (ylim - AL) * (j + 1) / (1000), ylim, AL / ylim + (ylim - AL) / ylim * (j) / 1000, AL / ylim + (ylim - AL) / ylim * (j + 1) / 1000, facecolor='r', alpha=0.1)

这里我画的是一个正方形,xy坐标刻度相同,比较简单,若范围不一样,则需要更复杂一些。其中AL表示三角形的图中绿线的值,ylim表示xy的最大值。效果如下,其实只要确定好范围就行了。
在这里插入图片描述

总结

一个投机取巧的方法,实现非矩形区域着色。利用这个思想,只要确定需要的范围,就可以实现区域的着色了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值