how do i combine two bar graphs
221 次查看(过去 30 天)
显示 更早的评论
I have tried to combine these two graphics in many ways but nothing works for me, just as the creation of the legends gives me an error. I need help for this because neither the combination nor the legends want to serve me, Thank you!
b1=bar(app.CasosUIAxes,data1.dateRep,data1.cases);
hold on
%grafica de barras 2
b2=bar(app.CasosUIAxes,data2.dateRep,data2.cases);
hold off
legend(app.CasosUIAxes,[b1 b2],'Bar Chart 1','Bar Chart 2')
2 个评论
采纳的回答
Benjamin Kraus
2021-2-8
I could be misunderstanding your question, but I suspect the problem you are facing is that your bar graphs are perfectly overlapping one another. If you create two bar graphs with the same x-values, they will overlap each other and one could be hidden behind the other. The better approach is to create both bars simulteneously with a single call to the bar command.
Consider these three blocks of code. The second approach is preferred.
Overlapping Bars
x = 1:5;
y1 = 1:5;
y2 = 2:6;
bar(x,y1);
hold on
bar(x,y2); % Second bar ignores first bar and will overlap the first bar
Grouped Bars (Preferred Approach)
x = 1:5;
y1 = 1:5;
y2 = 2:6;
bar(x,[y1;y2]); % Creating both bars at once, they are aware of one another and will not overlap
This approach can be used if the x-data for both bars is different as well, either by padding the x-values and y-values with NaNs, or passing to matrices into the bar command. If you pass two matrices into the bar command, be careful of the orientation of the matrices, or you will get unexpected results.
x1 = 1:5;
x2 = 3:7;
y1 = 1:5;
y2 = 2:6;
bar([x1; x2]',[y1;y2]');
Manually Shifted Bars
x = 1:5;
y1 = 1:5;
y2 = 2:6;
bar(x-0.25,y1,0.5) % Manually shift the bar and make it narrower so the other bar fits.
hold on
bar(x+0.25,y2,0.5) % Manually shift the bar and make it narrower so the other bar fits.
6 个评论
Benjamin Kraus
2024-5-30
编辑:Benjamin Kraus
2024-5-30
@Artjom Vartanyan: The "Grouped Bars (Preferred Approach)" above won't work with yyaxis. You could leverage the "Manually Shifted Bars" approach, but there is another option which is a bit more complicated.
For yyaxis, you need to create 4 different bar objects using two separate calls to the bar command:
- A bar object with the data for the left side.
- A bar object with all NaN values as a placeholder on the left side.
- A bar object with all NaN values as a placeholder on the right side.
- A bar object with the data for the right side.
Consider this example:
x = 1:5;
y1 = 1:5;
y2 = (1:5)*100;
yleft = [y1' NaN(5,1)];
yright = [NaN(5,1) y2'];
yyaxis left
bar(x,yleft);
yyaxis right
bar(x,yright);
更多回答(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!