フィルターのクリア

Changing ylim properties of multiple plotyy figures

2 ビュー (過去 30 日間)
Anna
Anna 2013 年 3 月 25 日
コメント済み: Walter Roberson 2019 年 5 月 19 日
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
Walter Roberson
Walter Roberson 2013 年 3 月 26 日
Ah, try with
findobj(7,'type','axes')

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

その他の回答 (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]);
  1 件のコメント
Walter Roberson
Walter Roberson 2019 年 5 月 19 日
Note these did not exist at the time the question was originally asked ;-)

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

カテゴリ

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