필터 지우기
필터 지우기

Add sets of graph onto tiledlayout

조회 수: 2 (최근 30일)
Huzaifah Shamim
Huzaifah Shamim 2020년 8월 8일
답변: Monisha Nalluru 2020년 8월 12일
I am using a nested for loop to try and create a 3-3 tiledlayout. In the outer for loop, i get the information and in the inner for-loop I am iterating through the information to create 3 plots.
The first error that I am getting is that I want to print 3 graphs in one row but it is only letting me print two.
The second error is that it resets the graphs everytime I go to the next iteration in the outerloop, Instead of keeping the graphs intact.
Here is my code. Please Help, Thank You!
function idek(xy_cell)
position = 1;
global num_drones
M_rows = num_drones;
%RUN LENGTH OF EXTRACTED CELL
for i = 1:length(xy_cell)
tiledlayout(5, 5);
ith_drone_xy = xy_cell{i};
x_loc = ith_drone_xy(:,1);
y_loc = ith_drone_xy(:,2);
for t = 1:length(x_loc)
x = x_loc(t);
y = y_loc(t);
clf
nexttile;
plot(x, y, 'go', 'LineWidth', 1, 'MarkerSize', 10)
hold on
plot(x_loc, y_loc, 'LineWidth', .5)
xlabel('x')
ylabel('y')
title(['Drone Trajectory at ', num2str(t), ' Seconds'])
nexttile;
plot(t, x, 'go', 'LineWidth', 1, 'MarkerSize', 10)
hold on
plot(x_loc, 'LineWidth', .5)
xlabel('Time')
ylabel('x-Location')
title(['Drone x-Location at ', num2str(t), ' Seconds'])
nexttile;
plot(t, y, 'go', 'LineWidth', 1, 'MarkerSize', 10)
hold on
plot(y_loc, 'LineWidth', .5)
xlabel('Time')
ylabel('y-Location')
title(['Drone y-Location at ', num2str(t), ' Seconds'])
% drawnow
% pause(0.3)
movieVector(t) = getframe;
end
hold('on')
nexttile;
end

답변 (1개)

Monisha Nalluru
Monisha Nalluru 2020년 8월 12일
The reason for errors obtained in above function
  • As mentioned in the question to get 3×3 tiledlayout, but in the code it is initialized for 5×5
  • The main reason for second error is tiledlayout should be initialized outside the for loop
  • The reason for first error might be data sent to function is not handled properly in for loop.
You can use something like below:
a={{[1,2,3,4],[5,6,7,8]},{[7,8,9,10],[11,12,13,14]}};
tiledlayout(2,2)
for i=1:numel(a)
ele=a{1,i};
for j=1:numel(ele)
newele=ele{1,j};
nexttile
plot(newele);
end
end
You can customize accordingly.

카테고리

Help CenterFile Exchange에서 Subplots에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by