(matplotlib)将yerr / xerr绘制为阴影区域而不是误差线

在matplotlib中,如何将错误绘制为阴影区域而不是误差线?

例如:

http://qhwiki.originlab.com/~originla/howtohttp://img.dovov.comc/cc/Error_Bars_with_Fill_Area_01.png

而不是

忽略示例graphics中点之间的平滑插值(需要进行一些手动插值,或者只是获得更高分辨率的数据),可以使用pylab.fill_between()

 from matplotlib import pyplot as pl import numpy as np x = np.linspace(0, 30, 30) y = np.sin(x/6*np.pi) error = np.random.normal(0.1, 0.02, size=y.shape) y += np.random.normal(0, 0.1, size=y.shape) pl.plot(x, y, 'k-') pl.fill_between(x, y-error, y+error) pl.show() 

在这里输入图像说明

另请参阅matplotlib示例 。

这与Evert提供的答案基本相同 ,但扩展了fill_between一些很酷的选项

在这里输入图像说明

 from matplotlib import pyplot as pl import numpy as np pl.clf() pl.hold(1) x = np.linspace(0, 30, 100) y = np.sin(x) * 0.5 pl.plot(x, y, '-k') x = np.linspace(0, 30, 30) y = np.sin(x/6*np.pi) error = np.random.normal(0.1, 0.02, size=y.shape) +.1 y += np.random.normal(0, 0.1, size=y.shape) pl.plot(x, y, 'k', color='#CC4F1B') pl.fill_between(x, y-error, y+error, alpha=0.5, edgecolor='#CC4F1B', facecolor='#FF9848') y = np.cos(x/6*np.pi) error = np.random.rand(len(y)) * 0.5 y += np.random.normal(0, 0.1, size=y.shape) pl.plot(x, y, 'k', color='#1B2ACC') pl.fill_between(x, y-error, y+error, alpha=0.2, edgecolor='#1B2ACC', facecolor='#089FFF', linewidth=4, linestyle='dashdot', antialiased=True) y = np.cos(x/6*np.pi) + np.sin(x/3*np.pi) error = np.random.rand(len(y)) * 0.5 y += np.random.normal(0, 0.1, size=y.shape) pl.plot(x, y, 'k', color='#3F7F4C') pl.fill_between(x, y-error, y+error, alpha=1, edgecolor='#3F7F4C', facecolor='#7EFF99', linewidth=0) pl.show()