Filter löschen
Filter löschen

Create a bar graph where the next bar starts where the previous ends

6 Ansichten (letzte 30 Tage)
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.

Akzeptierte Antwort

Matt J
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
Maria Ali
Maria Ali am 1 Jan. 2022
well when i simply run this code it, the two mentioned lines open up a new figure. I changed the following code
h=bar(ys,'stacked','FaceColor','flat','ShowBase',0);
to
h = bar(app.Bar_tab_16, ys,'stacked','FaceColor','flat','ShowBase',0);
where app.Bar_tab_16 is the name of the axes where i am plotting my chart. But since i don't know how to change the remaining two lines so that I can add the names of the axes, it opens up a new figure and the plot is also different in app designer than simply running it in script file.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Image Analyst
Image Analyst am 31 Dez. 2021
I think you'll have to use the patch() function to create rectangular patches "floating" off the axis.

Kategorien

Mehr zu 2-D and 3-D Plots finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by