讲的很模糊,填充区域的原理,估计没有人可以听懂在讲什么
plt.fill_between(x, np.abs(x) < 0.5, c, c > 0.5, color="green", alpha=0.25)
第一个参数x表示x轴,第二个参数 np.abs(x)表示x的绝对值,np.abs(x) < 0.5是一个判定变量,c表示y轴,c > 0.5是一个判定条件。
当np.abs(x) < 0.5为真(1),从y轴的1(满足c>0.5)开始往两边填充(当然X轴上是-0.5到0.5之间的区域),此时填充的也就是图上方的两小块。当np.abs(x) >= 0.5为假(0),从y轴的0开始向上填充,当然只填充c>0.5的区域,也就是图中那两个大的对称区域。
总的来说,必须满足c>0.5(对应API文档中的where条件),在这个前提下进行填充,前面那个判定变量可以为0或1.
个人理解,,
总结前面大佬的回答,自己也上官网看了,感觉自己终于能理解了 plt.fill_between(x, np.abs(x)<0.5, c, c>0.5, color="green", alpha=0.25) #对照官网matplotlib.pyplot.fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, *, data=None, **kwargs) #其中x是必写的表示x轴, y1是第一条曲线, y2是第二条曲线, 这个函数的意思就是要在满足where的条件下在y1与y2曲线之间填充 #在我们的这句话中, np.abs(x)<0.5就是y1, 是一个布尔值, c就是y2, 是cos(x). #当|x|<0.5时布尔值为1, 即y1就是1, 此时填充y1=1和y2=c之间的部分. |x|>=0.5时布尔值为0, 即y1就是0, 此时填充y1=0和y2=c之间的部分 #c>0.5其实是判断条件, 完整写应该是where=c>0.5, 意思是在c>0.5的条件下完成前面的填充
我也来解释下,看是否清楚
matplotlib.pyplot.
fill_between
(x, y1, y2=0, where=None, interpolate=False, step=None, hold=None, data=None, **kwargs)[source]
x : array (length N)
The x coordinates of the nodes defining the curves.
y1 : array (length N) or scalar
The y coordinates of the nodes defining the first curve.
y2 : array (length N) or scalar, optional, default: 0
The y coordinates of the nodes defining the second curve.
必须看官网才明白,第二个参数y1是曲线1,第三个参数y2是曲线2
---------------------------------------------------------------------------------
plt.fill_between(x, np.abs(x) < 0.5, c, c > 0.5, color="green", alpha=0.25)
abs(x)<0.5,当-arccos(0.5)<x<-0.5,0.5<x<arccos(0.5)时,该表达式为假(即0),也就是y1=0就是x轴,反之表达式取1,就是y1=1
曲线2就是y2=c,(但c限定大于0.5那一小段范围)
把曲线1和曲线2围成图形就是课程中的样子
如下:
从y=0到y=c (-arccos(0.5)<x<-0.5,0.5<x<arccos(0.5));
从y=1到y=c (-0.5<x<0.5)
一大半的人听不懂
c表示的应该就是c=cos(x)这个曲线,而不是y轴。其它正解。