Create a bar graph where the next bar starts where the previous ends
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Maria Ali
am 31 Dez. 2021
Kommentiert: Maria Ali
am 1 Jan. 2022
I have a data set where I have alternatingly positive and negative values for each year. I need to plot them on a bar chart but the 2nd bar must start where the first bar ends. I cannot make it work with changing basevalue and can't find anyother option.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/849300/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/849305/image.png)
0 Kommentare
Akzeptierte Antwort
Matt J
am 31 Dez. 2021
Bearbeitet: Matt J
am 31 Dez. 2021
For example,
y = [4 2 3;
1 6 5]';
n=size(y,1);
dy=([1,-1].*y).';
yc=[0, repelem(cumsum(dy(:).'),2)];
ymin=min(yc(:));
lims=sort(reshape(yc(1:end-1),2,[]))-ymin;
ys=[lims(1,:); diff(lims)]';
h=bar(ys,'stacked','FaceColor','flat','ShowBase',0);
h(1).Visible='off';
h(2).CData(1:2:end,:)=repmat( [0 0 1] ,n,1);
yticklabels( str2double(yticklabels) +ymin + "")
7 Kommentare
Weitere Antworten (1)
Image Analyst
am 31 Dez. 2021
I think you'll have to use the patch() function to create rectangular patches "floating" off the axis.
Siehe auch
Kategorien
Mehr zu 2-D and 3-D Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!