Create a bar graph where the next bar starts where the previous ends
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Maria Ali
el 31 de Dic. de 2021
Comentada: Maria Ali
el 1 de En. de 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 comentarios
Respuesta aceptada
Matt J
el 31 de Dic. de 2021
Editada: Matt J
el 31 de Dic. de 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 comentarios
Más respuestas (1)
Image Analyst
el 31 de Dic. de 2021
I think you'll have to use the patch() function to create rectangular patches "floating" off the axis.
Ver también
Categorías
Más información sobre 2-D and 3-D Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!