Using a second call to copyobj is not working

I'm copying the left axis of a plot over to its right side, making a change to the left axis, and then trying to recopy those changes over to the right side. But I can't get the right axis to clear before copying the new changes over. I've tried clearing the right axis, and also setting the Cax.Right.YTick and Cax.Right.YTickLabel directly, but none of those attempts worked. Thanks!
x=1:10;
y=1:10;
plot(x,y)
Cax.Left = gca;
Cax.Right = copyobj(Cax.Left, gcf);
Cax.Right.YAxisLocation = 'Right';
Cax.Left.YLim = [0,20];
Cax.Right = copyobj(Cax.Left, gcf);
Cax.Right.YAxisLocation = 'Right';

댓글 수: 2

Jan
Jan 2018년 5월 11일
편집: Jan 2018년 5월 11일
"Is not working" is a weak description of the problem. Prefer to explain, what you observe instead: an error message or does the result differ from your expectation?
You do not copy the "left axis", but the complete axes object. The copied object let not vanish the formerly existing object, such that the figure contains 2 axes objects at the end. There might be a more direct way to produce, what you want to achieve.
Hi Jan. That's a fair critique of the title of my question, although I did try to be more detailed in the actual question. Nevertheless I wanted to thank you because your comment helped me solve the issue. Putting in the line of code:
delete(Figure.Children(2));
prior to calling copyobj the second time worked. So, thanks!.. - Bill

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

답변 (1개)

Steven Lord
Steven Lord 2018년 5월 11일

0 개 추천

If you want an axes with rulers on both the left and right, you should use yyaxis. If you're using a release that predates the introduction of yyaxis in release R2016a, use plotyy.

카테고리

도움말 센터File Exchange에서 Graphics Objects에 대해 자세히 알아보기

제품

릴리스

R2018a

태그

질문:

2018년 5월 11일

댓글:

2018년 5월 11일

Community Treasure Hunt

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

Start Hunting!

Translated by