Matplotlib:用数组调用plot函数有什么作用?

时间:2017-03-25 11:18:14

标签: python matplotlib

对于x和y,使用数组调用plot函数有什么作用?请看第15行。

x1 = stats.norm.ppf(0.001)
x2 = stats.norm.ppf(0.999)

x = np.linspace(x1, x2, 100)

y = stats.norm.pdf(x)

yhalf = []
for i in range(len(x)):
    if i > len(x)/2:
        yhalf.append(y[i])
    else:
        yhalf.append(0)

plt.plot([x, x], [y, yhalf], 'y-')

plt.axes().set_xlim(x1, x2)

Plot

它是否填充两条曲线之间的区域?我们可以控制或设计这种填充物吗?我想用透明的颜色填充光滑的颜色。

谢谢!

1 个答案:

答案 0 :(得分:2)

来自the docs

  

如果x和/或y是二维的,那么将绘制相应的列。

也就是说,如果我们a, b, c, d np.array s具有相同的大小plt.plot([a, b], [c, d]),则s命令将(a[0], c[0]) -> (b[0], d[0])yhalf[0:len(x)/2]y 1}}。

在您的情况下,(x[i], y[i]) -> (x[i], yhalf[i])为0,其他值与case 1: i < len(x)/2: (x[i], y[i]) -> (x[i], 0) <-- the columns you see case 2: i >= len(x)/2: (x[i], y[i]) -> (x[i], y[i]) <-- lines with 0 length (== invisible) 相同。根据我之前的说法,您可以从plt.fill_between([x, y], [x, yhalf]) 中绘制线条,用于

mb_detect_encoding

如果要填充两条曲线之间的区域,请尝试fill_between。如果我记得没错,你应该可以将其用作

mb_check_encoding