如何通过填充操作正确遮挡Matplotlib中多个重叠的绘图?
要实现你要的遮挡效果,只需要按层级规则设置zorder参数即可,需满足两个逻辑:
- 同一条曲线的线条层级要高于自身的填充区域,避免线条被自己的填充挡住
- 位置越高的曲线整体层级越高,保证上层的填充可以完全遮挡下层的所有绘图内容
修改后的代码如下:
import numpy as np import matplotlib.pyplot as plt def gaussian(x, mu, sig): return np.exp(-(x - mu)*(x - mu) / (2 * sig*sig)) mus = [4, 3, 2, 1, 0, -1, -2, -3, -4] x = np.linspace(-10, 10, 500) for i in range(len(mus) - 1, -1, -1): mu = mus[i] y = gaussian(x, mu, 1) + i * 0.1 plt.plot(x, y, zorder=2*i + 2) plt.fill_between(x, y, 0, color="lightgray", zorder=2*i +1) plt.show()
内容的提问来源于stack exchange,提问作者masher
相关产品推荐
相关产品推荐

