How can I plot multiple areas in the same graph?
13 次查看(过去 30 天)
显示 更早的评论
I have 6 vectors and I want to make a plot of their areas, exactly like the image attached.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/162966/image.jpeg)
Is there any way to acomplished that? Thanks a lot!
0 个评论
采纳的回答
Kelly Kearney
2014-5-19
Here's an example of the stacking area plots idea:
% Sample data
data = bsxfun(@plus, normpdf(linspace(0,6,100), 2, 0.5)', rand(100,6)*0.1);
data = bsxfun(@plus, data, rand(1,6)*0.5 + 0.25);
% Plot
n = size(data,2);
base = min(data) - 0.01; % Base value for each dataset
bloc = (0:n-1) * 0.5; % Where that base value will be located
axes; hold on;
for ii = 1:size(data,2)
h(ii) = area(data(:,ii)-base(ii)+bloc(ii), bloc(ii));
end
uistack(h, 'top');
3 个评论
Kelly Kearney
2015-4-7
You're right, 2014b+ versions seem to reset the base value for all area plots on an axis together, rather than allowing different ones per area object, as in previous versions. I'd submit a bug report on that... seems like an undocumented (and very inconvenient) change, at the least.
Hsin-Hua Wang
2016-6-23
Answering my own question one year ago, this feature has not been fixed yet, meaning one baseline value for one axes. I end up assign every plot their own axes and hide everything for those axes.
更多回答(2 个)
Ullekh Gambhira
2018-6-16
I am facing the same issue, I solved it by using "Shade area between two curves" function by John Bockstege. The file exchange link for this function is below:
https://www.mathworks.com/matlabcentral/fileexchange/13188-shade-area-between-two-curves
It does not consider base value, but basically shades the area between two lines. So one line can be your vector and the other can be a baseline*ones(size(x)).
Hope this helps.
Regards, Ullekh
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Annotations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!