Changing ylim properties of multiple plotyy figures

2 次查看(过去 30 天)
Hello,
I am creating multiple figures using plotyy inside a loop. After creating the figures, I want to change the y-limits of some of the figures manually. Figure properties only lets me change ax(1) properties but not ax(2) so I tried setting properties via command line but to no success.
This is my code for creating figures:
for k=1:30
figure(k)
[ax, h1, h2]=plotyy(year, precip.(varnames{k}),year,runoff.(varnames{k}));
set(gca,'NextPlot','add');
drawnow
print('-dtiff','-r200',varnames{k});
hold off
end
I then tried changing y-limits of ax(2) using this command:
figure(7),set(ax(2),'ylim',[200 700]);
But receive this error: ??? Error using ==> set Invalid handle object.
A few times matlab did run the command without producing an error but did not actually change the limits. I was wondering if you could show me how to get matlab to remember the axis handles I set when creating each figure so I can use them to change figure properties afterwards? Or another way to change plotyy properties after creating the figures? many thanks!

采纳的回答

Walter Roberson
Walter Roberson 2013-3-25
You are overwriting ax each time through your loop, so it no longer refers to figure 7's ax.
findobj(7,'type','axis')
would get you both axis of figure 7; you would have to figure out which is which (perhaps by examining which side the label is set to be drawn on.)
  2 个评论
Anna
Anna 2013-3-26
Hi Walter, I tried this (and a few variations of it) but it returns an empty matrix. It does bring up the correct figure but I guess it can't find any axes for it. Do you have any other ideas what I could try? cheers

请先登录,再进行评论。

更多回答(2 个)

Azzi Abdelmalek
Azzi Abdelmalek 2013-3-25
Try
figure(7),
ax=gca,
set(ax(2),'ylim',[200 700]);
  2 个评论
Anna
Anna 2013-3-25
I tried this but gca only returns one axis (ax(1)) and when I try setting ylim for ax(2) I get an error message saying ??? Index exceeds matrix dimensions. Do you know how I can get gca to return both ax(1) and ax(2)?
Walter Roberson
Walter Roberson 2013-3-25
gca cannot return both ax, as only one axis can be the current axis.

请先登录,再进行评论。


Nicolò Cogno
Nicolò Cogno 2019-5-15
编辑:Nicolò Cogno 2019-5-15
Hi,
I would also suggest trying this:
figure(1), ax=gca;
set(ax.YAxis(1),'Limits',[0 1]);
set(ax.YAxis(2),'Limits',[0 1]);

类别

Help CenterFile Exchange 中查找有关 Two y-axis 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by