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

1 visualizzazione (ultimi 30 giorni)
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 Commento
Bobby Huxford
Bobby Huxford il 10 Lug 2019
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

Accedi per commentare.

Risposta accettata

Geoff Hayes
Geoff Hayes il 10 Lug 2019
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).

Più risposte (0)

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by