How can I create a plot with subplots in a loop?

1 回表示 (過去 30 日間)
gsourop
gsourop 2019 年 7 月 10 日
コメント済み: Bobby Huxford 2019 年 7 月 10 日
Hi everyone,
I am trying to create a plot with subplots within a loop. The code so far is:
x = randn(100,13);
D = 1966
dis = 3
[T N] = size(x);
for i = 1 : N
VARNAMES{i} = i;
end
time = datetime(D,1:T,1);
figure;
for k = 1:N
subplot (ceil(N/dis),dis,k)
filename = plot( time' , x(:, k ) );
xlim(datenum([min(time) max(time)]))
title ( VARNAMES(k));
hold on
end
But I get an Error message ''Error using xlim (line 31)
Limits must be a 2-element vector of increasing datetime values.''
Could you please point out where is the mistake?
  1 件のコメント
Bobby Huxford
Bobby Huxford 2019 年 7 月 10 日
The issue seems to be with xlim(), rather than with creating subplots within a loop.
If you remove the below line, subplots are created within a loop.
xlim(datenum([min(time) max(time)]))
However, you can use the xlim command in this code by removing the datenum function:
x = randn(100,13);
D = 1966
dis = 3
[T N] = size(x);
for i = 1 : N
VARNAMES{i} = i;
end
time = datetime(D,1:T,1);
figure;
for k = 1:N
subplot (ceil(N/dis),dis,k)
filename = plot( time' , x(:, k ) );
xlim([min(time) max(time)])
title ( VARNAMES(k));
hold on
end

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

採用された回答

Geoff Hayes
Geoff Hayes 2019 年 7 月 10 日
gsourop - why the conversion at
datenum([min(time) max(time)])
since time should already be an array of datenum types? You may just need to do
xlim([min(time) max(time)])
so that you pass a two-element vector of increasing values.
Also, you should rename your time array so that it doesn't conflict with the built-in MATLAB function of the same name (see time for details).

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSubplots についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by