平时在画图时,常需要绘制此种类型的图。这种图可以使用Matlab中的patch函数。
主要的思路为:先通过patch函数根据每一列的最大值和最小值进行填充,再使用plot函数绘制均值线。
X = (0 : 20)';
minY = [0 1 2 4 3 6 5 7 9 11 12 10 12 14 13 17 15 16 20 18 25]';
maxY = [11 10 12 14 13 17 15 16 20 18 25 21 22 24 23 26 25 27 29 31 32]';
meanY = (minY + maxY) / 2;
Length = 800;
Width = 600;
gc = get(gca);
set(gcf, 'position', [300, 50, Length, Width]);
patch([X; flipud(X)], [minY; flipud(maxY)], 'r', 'FaceA', .2, 'EdgeA', 0);
hold on;
plot(X, meanY, 'r', 'linewidth', 2.0);
绘制的结果如下: