Visual stacking order of objects and plotyy

12 ビュー (過去 30 日間)
Luca
Luca 2012 年 5 月 28 日
編集済み: Adam Danz 2019 年 8 月 13 日
Hi,
I have created a graph using the PLOTYY command,
[AX, H1, H2] = plotyy(Xdata, Y1data, Xdata, Y2data, 'loglog', 'loglog');
uistack(AX(1), 'up');
I want to annotate the graph using "line", and I want these lines to be behind the existing data.
I have tried the following code:
h_line = line(x, y);
uistack(h_line, 'bottom');
which places the line behind the data of the left y-axis (i.e. AX(1)), but still on top of the data of the right y-axis (i.e. AX(2)).
Does anyone know how to change the stacking order of annotation objects such that they lay behind all existing data made using PLOTYY?
Thanks,
Luca

採用された回答

Walter Roberson
Walter Roberson 2012 年 5 月 29 日
In order for a line drawn on one axes to appear behind a line drawn on another axes, the entire axes of the line must be behind the other axes.
You might end up having to use a third axes with the same position and axes limits as the first axes, but uistack()'d behind both other axes.
  2 件のコメント
Luca
Luca 2012 年 5 月 29 日
Thank you very much, it worked!
Luca
Luca 2012 年 5 月 29 日
編集済み: Adam Danz 2019 年 8 月 13 日
This is the code I used:
...
h_gca = gca;
gca_position = get(h_gca, 'Position');
AX_annotations = axes('Position', gca_position, 'Visible', 'off');
set(AX_annotations, 'XScale', get(h_gca, 'XScale'), ...
'YScale', get(h_gca, 'YScale'), ...
'XLim', get(h_gca, 'XLim'), ...
'YLim', get(h_gca, 'YLim'));
line(......)
uistack(AX_annotations, 'bottom');

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeTwo y-axis についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by