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!