I am making a plot like this:
I want to move the green rectangles behind the two bars. Is there any ways to achieve that other than simply chanign the transparency?
Thanks for everyone who answers my question!

 採用された回答

Adam Danz
Adam Danz 2022 年 8 月 1 日
編集済み: Adam Danz 2022 年 8 月 1 日

0 投票

Plot the green bars first, before the bar plot.
Alternatively use uistack to control the stacking order of graphics objects.

5 件のコメント

Jiaqi Wang
Jiaqi Wang 2022 年 8 月 1 日
Thank you for the anwser! I have the code like this:
p = bar(x, vGRF)
p.FaceColor = 'flat';
p.CData(1,:) = r;
p.CData(2,:) = y;
rec1 = rectangle('Position',[0.55, 0.45, 0.9, 0.1],'FaceColor', 'g')
rec2 = rectangle('Position',[1.55, 0.45, 0.9, 0.1],'FaceColor', 'g')
uistack([p])
It seems that uistack only moves the red bar on top of the green box. Is there anyway to access both bars and put them above the boxes?
Adam Danz
Adam Danz 2022 年 8 月 1 日
Plot the green bars first.
rec1 = rectangle('Position',[0.55, 0.45, 0.9, 0.1],'FaceColor', 'g')
hold on
rec2 = rectangle('Position',[1.55, 0.45, 0.9, 0.1],'FaceColor', 'g')
p = bar(x, vGRF)
p.FaceColor = 'flat';
p.CData(1,:) = r;
p.CData(2,:) = y;
Jiaqi Wang
Jiaqi Wang 2022 年 8 月 2 日
I tried the method above. The problem was that this step was built in a for loop to plot real-time bar plot. Everytime it runs, the bars were overlayed as well. I tried hold off, which did not solve this problem.
I really appreciate your answer!
Adam Danz
Adam Danz 2022 年 8 月 2 日
編集済み: Adam Danz 2022 年 8 月 4 日
Demo:
figure
bar(1:3)
hold on
h = plot([0,4],[.5 .5],'k-','LineWidth', 5);
figure
bar(1:3)
hold on
h = plot([0,4],[.5 .5],'k-','LineWidth', 5);
uistack(h,'bottom')
Jiaqi Wang
Jiaqi Wang 2022 年 8 月 4 日
This works perfectly! Thank you so much!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeSpecifying Target for Graphics Output についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by