Python matplotlib 中填充颜色
matplotlib中填充颜色主要是两个函数,一个是fill,一个是fill_between,这里讲一下详细的关键字,
这里关键字主要有facecolor填充色, where填充条件, alpha透明度,interpolate求交叉边界
import matplotlib.pyplot as pltimport numpy as npx = np.arange(0.0, 4, 0.05)y1 = np.sin(np.pi * x)y2 = np.sin(2 * np.pi * x)fig, axe = plt.subplots(1, 1, figsize=(10,8))# axe.plot(x,y1, color ='C1')# axe.plot(x,y2, color='C2')axe.plot(x,y1,x,y2, color='black')
如果想加入填充,那么,可以使用fill函数:
‘’’
axe.fill(x, y1, alpha=0.5, label='y1')axe.fill(x, y2, alpha=0.5, label='y2')
不过这样会发现,就是在填充区域会出现一些白色的没填充的区域,这是由于我们在设置x的时候其分段不是足够小,
因此,截断的位置并不是正好两曲线相交的位置;
可以通过改更小的x间距;可以发现x间距改小,图像结果就有所改善。
接下来用fillbetweeen, 关键字
facecolor是填充色,
where是设定填充条件,满足条件时候则实现填充该颜色
也可以加入参数interpolate=True,自动求交点边界并填充
加上透明度alpha
“”"
axe.fill_between(x,y1,y2,facecolor='b', where=y1>y2, alpha=0.5, interpolate=True)axe.fill_between(x,y1,y2,facecolor='r', where=y1<y2, alpha=0.5, interpolate=True)plt.show()
另外,有个小技巧,fill函数默认是填充到x=0坐标轴,没有where与interpolate这些参数的,但是不妨碍我们,可以手动嘛!自己造一个x轴:
axe.plot(x,y1, color ='r',linestyle='--')axe.plot(x,y2, color='b',linestyle='--')y3 = [0 for i in range(len(x))]axe.plot(x,y3, linewidth=1,color='black')axe.fill_between(x, y1, y3, facecolor='r', where=y1 > 0, alpha=0.5, interpolate=True)axe.fill_between(x, y2, y3, facecolor='b', where=y2 < 0, alpha=0.5, interpolate=True)