Plot two figures simultaneously

4 views (last 30 days)
I would like to know how to generate this two graphs from this code at the same time:
close all
clear all
clc
format long
%% Data Layup
Layup = [90 0 0 45 -45 0 0 -45 45 0 0 90];
Dimensions_Ply = [100 100 0.125]; % [mm]; x,y,z of individual ply
Total_Thickness = sum(Dimensions_Ply(3)*ones(length(Layup),1)); % Could change if the meterials are not the same
%
x_dimension = Dimensions_Ply(1);
y_dimension = Dimensions_Ply(2);
z_dimension = Dimensions_Ply(3);
%% 3D Laminate generator
for i = 1:length(Layup)
if Layup(i) == 90
C(i) = {'r'}; % 90º = red
elseif Layup(i) == 0
C(i) = {'g'}; % 0º = green
elseif Layup(i) == 45
C(i) = {'b'}; % 45º = blue
elseif Layup(i) == -45
C(i) = {'c'}; % -45º = cyan
end
end
%%%%%%%%%%%%%%%%%%%%%%%
% movegui(f1,'west');
% get(0,'DefaultFigurePosition')
figure('Position',[110 206 560 420])
for n = 1:length(Layup)
coord = [... % Creating plies coordinates depending on dimensions
0 0 (n-1)*z_dimension;
x_dimension 0 (n-1)*z_dimension;
x_dimension y_dimension (n-1)*z_dimension;
0 y_dimension (n-1)*z_dimension;
0 0 ((n-1)*z_dimension) + z_dimension;
x_dimension 0 ((n-1)*z_dimension) + z_dimension;
x_dimension y_dimension ((n-1)*z_dimension) + z_dimension;
0 y_dimension ((n-1)*z_dimension) + z_dimension;];
idx = [4 8 5 1 4; 1 5 6 2 1; 2 6 7 3 2; 3 7 8 4 3; 5 8 7 6 5; 1 4 3 2 1]';
idx = [4 8 5 1 4; 1 5 6 2 1; 2 6 7 3 2; 3 7 8 4 3; 5 8 7 6 5; 1 4 3 2 1]';
% i = randi(4)
xc = coord(:,1);
yc = coord(:,2);
zc = coord(:,3);
patch(xc(idx), yc(idx), zc(idx),C{n}); % 'facealpha', 0.1
%
set(gca, 'XDir','reverse') % mAINTAIN perspective
set(gca, 'YDir','reverse')
%
xlabel('x [mm]')
ylabel('y [mm]')
zlabel('z [mm]')
hold on
title ('Isometric View')
% Creating the color legend
colors = ['r';'g';'b';'c'];
nColors=size(colors,1); % make variable so can change easily
labels={'90º';'0º';'45º';'-45º'};
hBLG = bar(nan(2,nColors)); % the bar object array for legend
for i=1:nColors
hBLG(i).FaceColor=colors(i,:);
end
legend(hBLG,labels,'location','northeast');
%
view(3);
%
drawnow
pause(0.002) % Speed of the drawing
%
hold off
end
figure('Position',[690 206 560 420])
for n = 1:length(Layup)
coord = [... % Creating plies coordinates depending on dimensions
0 0 (n-1)*z_dimension;
x_dimension 0 (n-1)*z_dimension;
x_dimension y_dimension (n-1)*z_dimension;
0 y_dimension (n-1)*z_dimension;
0 0 ((n-1)*z_dimension) + z_dimension;
x_dimension 0 ((n-1)*z_dimension) + z_dimension;
x_dimension y_dimension ((n-1)*z_dimension) + z_dimension;
0 y_dimension ((n-1)*z_dimension) + z_dimension;];
idx = [4 8 5 1 4; 1 5 6 2 1; 2 6 7 3 2; 3 7 8 4 3; 5 8 7 6 5; 1 4 3 2 1]';
% i = randi(4)
xc = coord(:,1);
yc = coord(:,2);
zc = coord(:,3);
patch(xc(idx), yc(idx), zc(idx),C{n}); % 'facealpha', 0.1
%
set(gca, 'XDir','reverse') % mAINTAIN perspective
set(gca, 'YDir','reverse')
%
xlabel('x [mm]')
ylabel('y [mm]')
zlabel('z [mm]')
hold on
legend(hBLG,labels,'location','northeast');
title ('Front-side View')
% Creating the color legend
colors = ['r';'g';'b';'c'];
nColors=size(colors,1); % make variable so can change easily
labels={'90º';'0º';'45º';'-45º'};
hBLG = bar(nan(2,nColors)); % the bar object array for legend
for i=1:nColors
hBLG(i).FaceColor=colors(i,:);
end
legend(hBLG,labels,'location','northeast');
%
view(90,0);
%
drawnow
pause(0.002)
%
hold off
end

Accepted Answer

DGM
DGM on 26 Apr 2022
You can try something like this. There's some lag in between figure updates, but it's a start.
% Data Layup
Layup = [90 0 0 45 -45 0 0 -45 45 0 0 90];
Dimensions_Ply = [100 100 0.125]; % [mm]; x,y,z of individual ply
Total_Thickness = sum(Dimensions_Ply(3)*ones(length(Layup),1)); % Could change if the meterials are not the same
x_dimension = Dimensions_Ply(1);
y_dimension = Dimensions_Ply(2);
z_dimension = Dimensions_Ply(3);
% 3D Laminate generator
for i = 1:length(Layup)
if Layup(i) == 90
C(i) = {'r'}; % 90º = red
elseif Layup(i) == 0
C(i) = {'g'}; % 0º = green
elseif Layup(i) == 45
C(i) = {'b'}; % 45º = blue
elseif Layup(i) == -45
C(i) = {'c'}; % -45º = cyan
end
end
hf1 = figure('Position',[110 206 560 420]);
title ('Isometric View')
hf2 = figure('Position',[690 206 560 420]);
title ('Front-side View')
for n = 1:length(Layup)
coord = [... % Creating plies coordinates depending on dimensions
0 0 (n-1)*z_dimension;
x_dimension 0 (n-1)*z_dimension;
x_dimension y_dimension (n-1)*z_dimension;
0 y_dimension (n-1)*z_dimension;
0 0 ((n-1)*z_dimension) + z_dimension;
x_dimension 0 ((n-1)*z_dimension) + z_dimension;
x_dimension y_dimension ((n-1)*z_dimension) + z_dimension;
0 y_dimension ((n-1)*z_dimension) + z_dimension;];
idx = [4 8 5 1 4; 1 5 6 2 1; 2 6 7 3 2; 3 7 8 4 3; 5 8 7 6 5; 1 4 3 2 1]';
figure(hf1)
updatefig(coord,idx,n,C,1)
figure(hf2)
updatefig(coord,idx,n,C,2)
%pause(0.002)
end
function updatefig(coord,idx,n,C,dispstyle)
xc = coord(:,1);
yc = coord(:,2);
zc = coord(:,3);
patch(xc(idx), yc(idx), zc(idx),C{n}); % 'facealpha', 0.1
set(gca, 'XDir','reverse') % mAINTAIN perspective
set(gca, 'YDir','reverse')
xlabel('x [mm]')
ylabel('y [mm]')
zlabel('z [mm]')
hold on
% Creating the color legend
colors = ['r';'g';'b';'c'];
nColors = size(colors,1); % make variable so can change easily
labels = {'90º';'0º';'45º';'-45º'};
hBLG = bar(nan(2,nColors)); % the bar object array for legend
for i = 1:nColors
hBLG(i).FaceColor = colors(i,:);
end
legend(hBLG,labels,'location','northeast');
switch dispstyle
case 1
view(3);
case 2
view(90,0);
end
drawnow
hold off
end

More Answers (1)

Mathieu NOE
Mathieu NOE on 26 Apr 2022
hi
my suggestion with subplots
close all
clear all
clc
format long
%% Data Layup
Layup = [90 0 0 45 -45 0 0 -45 45 0 0 90];
Dimensions_Ply = [100 100 0.125]; % [mm]; x,y,z of individual ply
Total_Thickness = sum(Dimensions_Ply(3)*ones(length(Layup),1)); % Could change if the meterials are not the same
%
x_dimension = Dimensions_Ply(1);
y_dimension = Dimensions_Ply(2);
z_dimension = Dimensions_Ply(3);
%% 3D Laminate generator
for i = 1:length(Layup)
if Layup(i) == 90
C(i) = {'r'}; % 90º = red
elseif Layup(i) == 0
C(i) = {'g'}; % 0º = green
elseif Layup(i) == 45
C(i) = {'b'}; % 45º = blue
elseif Layup(i) == -45
C(i) = {'c'}; % -45º = cyan
end
end
%%%%%%%%%%%%%%%%%%%%%%%
% movegui(f1,'west');
% get(0,'DefaultFigurePosition')
figure('Position',[390 106 1093 815])
for n = 1:length(Layup)
%% top plot
coord = [... % Creating plies coordinates depending on dimensions
0 0 (n-1)*z_dimension;
x_dimension 0 (n-1)*z_dimension;
x_dimension y_dimension (n-1)*z_dimension;
0 y_dimension (n-1)*z_dimension;
0 0 ((n-1)*z_dimension) + z_dimension;
x_dimension 0 ((n-1)*z_dimension) + z_dimension;
x_dimension y_dimension ((n-1)*z_dimension) + z_dimension;
0 y_dimension ((n-1)*z_dimension) + z_dimension;];
idx = [4 8 5 1 4; 1 5 6 2 1; 2 6 7 3 2; 3 7 8 4 3; 5 8 7 6 5; 1 4 3 2 1]';
idx = [4 8 5 1 4; 1 5 6 2 1; 2 6 7 3 2; 3 7 8 4 3; 5 8 7 6 5; 1 4 3 2 1]';
% i = randi(4)
xc = coord(:,1);
yc = coord(:,2);
zc = coord(:,3);
subplot(211),patch(xc(idx), yc(idx), zc(idx),C{n}); % 'facealpha', 0.1
hold on
set(gca, 'XDir','reverse') % mAINTAIN perspective
set(gca, 'YDir','reverse')
xlabel('x [mm]')
ylabel('y [mm]')
zlabel('z [mm]')
title ('Isometric View')
% Creating the color legend
colors = ['r';'g';'b';'c'];
nColors=size(colors,1); % make variable so can change easily
labels={'90º';'0º';'45º';'-45º'};
hBLG = bar(nan(2,nColors)); % the bar object array for legend
for i=1:nColors
hBLG(i).FaceColor=colors(i,:);
end
legend(hBLG,labels,'location','northeast');
view(3);
%
%% bottom plot
coord = [... % Creating plies coordinates depending on dimensions
0 0 (n-1)*z_dimension;
x_dimension 0 (n-1)*z_dimension;
x_dimension y_dimension (n-1)*z_dimension;
0 y_dimension (n-1)*z_dimension;
0 0 ((n-1)*z_dimension) + z_dimension;
x_dimension 0 ((n-1)*z_dimension) + z_dimension;
x_dimension y_dimension ((n-1)*z_dimension) + z_dimension;
0 y_dimension ((n-1)*z_dimension) + z_dimension;];
idx = [4 8 5 1 4; 1 5 6 2 1; 2 6 7 3 2; 3 7 8 4 3; 5 8 7 6 5; 1 4 3 2 1]';
% i = randi(4)
xc = coord(:,1);
yc = coord(:,2);
zc = coord(:,3);
subplot(212),patch(xc(idx), yc(idx), zc(idx),C{n}); % 'facealpha', 0.1
hold on
%
set(gca, 'XDir','reverse') % mAINTAIN perspective
set(gca, 'YDir','reverse')
%
xlabel('x [mm]')
ylabel('y [mm]')
zlabel('z [mm]')
legend(hBLG,labels,'location','northeast');
title ('Front-side View')
% Creating the color legend
colors = ['r';'g';'b';'c'];
nColors=size(colors,1); % make variable so can change easily
labels={'90º';'0º';'45º';'-45º'};
hBLG = bar(nan(2,nColors)); % the bar object array for legend
for i=1:nColors
hBLG(i).FaceColor=colors(i,:);
end
legend(hBLG,labels,'location','northeast');
%
view(90,0);
%
drawnow
pause(0.002)
%
end
hold off

Community Treasure Hunt

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

Start Hunting!