目录
fill:用来填充坐标轴和函数之间的区域
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
x=np.linspace(0,2*np.pi,num=500)
y=np.sin(x)
plt.fill(x,y,color='cornflowerblue',alpha=0.4)
plt.plot(x,y,color='red',alpha=0.8)
plt.plot([x[0],x[-1]],[y[0],y[-1]],color='red',alpha=0.8)
plt.xlim(0,2*np.pi)
plt.ylim(-1.1,1.1)
plt.show()
fill_between:用来填充函数之间的区域
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
x=np.linspace(0,2,500)#使用numpy库中的linspace在0到2之间平均取500个点
y1=np.sin(2*np.pi*x)
y2=1.4*np.sin(3*np.pi*x)#分别绘制y1和y2图像
fig,ax=plt.subplots(3,1,sharex='all')#这是一个3行1列的共享x轴的网格布局子区
plt.xlim(0,2)#设置x轴范围
ax[0].fill_between(x,0,y1,color='red',alpha=0.5)#将第一个子图曲线y1和y=0之间的区域填充上红色
ax[0].set_ylim(-1.2,1.2)#设置y轴范围
ax[1].fill_between(x,y2,1.1,color='blue',alpha=0.5)#y2和y=1.1之间区域填充成蓝色,透明度为0.5
ax[1].set_ylim(-1.5,1.5)
ax[2].fill_between(x,y1,y2,color='blue',alpha=0.3) #y1和y2之间区域填充成蓝色,透明度为0.3
ax[2].set_ylim(-1.5,1.5)
plt.show()
下面是加入了明确参数的fill_between的示例展示:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
x=np.linspace(0,2,500)
y1=np.sin(2*np.pi*x)
y2=1.4*np.sin(3*np.pi*x)
fig=plt.figure(figsize=(12,6))#指定画板的大小为12:6
ax=fig.add_subplot(111)#添加画布
ax.plot(x,y1,color='black')#分别绘制图像
ax.plot(x,y2,color='red')
ax.set_xlim(0,2)设置x轴的范围
#where指定范围,interpolate设定为True,可以为曲线交叉点附近的区域指定颜色,本人调节该参数后无变化
ax.fill_between(x,y1,y2,where=y1<=y2,interpolate=True,facecolor='cornflowerblue',alpha=0.7)
ax.fill_between(x,y2,y1,where=y1>=y2,interpolate=True,facecolor='darkred',alpha=0.7)
plt.show()
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
fig=plt.figure()
ax=fig.add_subplot(111)
y=np.linspace(0,2,500)
x1=np.sin(2*np.pi*y)
x2=1.4*np.sin(3*np.pi*y)
ax.plot(x1,y,color='k',ls=':',lw=2)#设定线条样式为虚线,宽度为2
ax.plot(x2,y,color='k')
ax.fill_betweenx(y,x2,x1,where=x1<=x2,interpolate=True,facecolor='cornflowerblue',alpha=0.7)
ax.fill_betweenx(y,x2,x1,where=x1>=x2,interpolate=True,facecolor='darkred',alpha=0.7)
ax.set_xlim(-1.5,1.5)
ax.set_ylim(0,2)
ax.grid(ls=':',lw=1,color='gray',alpha=0.5)
plt.show()