필터 지우기
필터 지우기

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

조회 수: 6 (최근 30일)
Maria Ali
Maria Ali 2021년 12월 31일
댓글: Maria Ali 2022년 1월 1일
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.

채택된 답변

Matt J
Matt J 2021년 12월 31일
편집: Matt J 2021년 12월 31일
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
Maria Ali
Maria Ali 2022년 1월 1일
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.
Maria Ali
Maria Ali 2022년 1월 1일
It's resolved now. Thanks all.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

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

카테고리

Help CenterFile Exchange에서 2-D and 3-D Plots에 대해 자세히 알아보기

태그

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by