考虑下面的matplotlib示例:https://matplotlib.org/3.1.1/gallery/recipes/fill_between_alpha.html
使用fill_between
可以显示标准偏差:
ax.fill_between(t, mu1+sigma1, mu1-sigma1, facecolor='blue', alpha=0.5)
但是,该区域被均匀填充,而每个x坐标的实际分布是正态的(我认为)。是否可以填充该区域以反映该区域(以使颜色越靠近该点,颜色就越密集)。
您可以假设我有数组
mu1
和mean
,它们为每个x坐标定义了一个正态分布,并且我想绘制这些分布:std
应该与密度成比例。作为解决方案,我可能可以使用
alpha
的多个层,但这并不精确,而且很hacky。 最佳答案
可能可以将filled contour与通过np.meshgrid和norm.pdf创建的X,Y,Z
数据一起使用。
我删除了fill between example中的fill_between
,并添加了以下内容:
import matplotlib.cm as cm
from scipy.stats import norm
width = 2.0
YS = np.linspace(np.min(mu1 - sigma1 * width),
np.max(mu1 + sigma1 * width), 101)
X,Y = np.meshgrid(t,YS)
Z = np.zeros_like(X, dtype=np.float)
for i, (mu,sigma) in enumerate(zip(mu1,sigma1)):
Z[:,i] = norm.pdf(YS, loc=mu, scale=sigma) * sigma
plt.contourf(X,Y,Z, cmap=cm.BuGn, levels=100)
结果是:
它尚不使用Alpha,因此仅适用于一行,可能您可以将Alpha与自定义色彩图一起使用,但这比较棘手。
关于python - Matplotlib-绘制不均匀的线分布,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59123634/