Partitioning and putting titles in a subplot
1 view (last 30 days)
Show older comments
clc; close all; clear all;
x=[0 1 2 3 6 4 5 8 5];y=[9 8 5 6 3 2 1 5 2];
subplot(4,4,1); plot(x,y);subplot(4,4,2); plot(x,y);subplot(4,4,3); plot(x,y);
subplot(4,4,4); plot(x,y);subplot(4,4,5); plot(x,y);subplot(4,4,6); plot(x,y);
subplot(4,4,7); plot(x,y);subplot(4,4,8); plot(x,y);subplot(4,4,9); plot(x,y);
subplot(4,4,10); plot(x,y);subplot(4,4,11); plot(x,y);subplot(4,4,12); plot(x,y);
subplot(4,4,13); plot(x,y);subplot(4,4,14); plot(x,y);subplot(4,4,15); plot(x,y);subplot(4,4,16); plot(x,y);
How to put partitioning as shown in the image and write title for each category ?
0 Comments
Answers (3)
Tushar
on 3 Jun 2023
Hi Reji,
Please try like this:
clc; close all; clear all;
x = [0 1 2 3 6 4 5 8 5];
y = [9 8 5 6 3 2 1 5 2];
figure; % Create a new figure
for i = 1:16
subplot(4, 4, i); % Create each subplot
plot(x, y);
% Add title to each subplot
title(sprintf('Subplot %d', i));
% Adjust subplot spacing
if mod(i, 4) ~= 1
ax = gca;
ax.YAxis.Visible = 'off';
end
if i <= 12
ax.XAxis.Visible = 'off';
end
end
In this modified code, I've added a loop to create each subplot using subplot(4, 4, i), where i corresponds to the index of the subplot. Then, I plot the data in each subplot using plot(x, y).
To add titles to each subplot, I've used the title function with a formatted string sprintf('Subplot %d', i), where i represents the index of the subplot.
I've also adjusted the subplot spacing by hiding the y-axis labels for subplots that are not on the leftmost column (if mod(i, 4) ~= 1) and hiding the x-axis labels for subplots below the last row (if i <= 12).
VBBV
on 4 Jun 2023
Edited: VBBV
on 4 Jun 2023
If you want partioning using subplot titles then below is one method
clc; close all; clear all;
x = [0 1 2 3 6 4 5 8 5];
y = [9 8 5 6 3 2 1 5 2];
figure; % Create a new figure
k = 1;
for I = 1:16
subplot(4, 4, I); % Create each subplot
plot(x, y);
if I <= (4)
% Add title to each subplot
title(sprintf('Cat %d', k));
k = k+1;
elseif I > 4 & I <=8
title('')
elseif I > 8 & I <=12
title(sprintf('Cat %d', k));
k = k+1;
else
title('')
end
end
otherwise, you can also add space between the subplots using Position property of subplot
Tushar
on 4 Jun 2023
Hi Reji,
Please do it like the following:
I know the partition lines are encroaching over the subplots : ), but I thought you yourself would be better able to adjust them according to your requirements.
clc; close all; clear all;
x = [0 1 2 3 6 4 5 8 5];
y = [9 8 5 6 3 2 1 5 2];
figure; % Create a new figure
for i = 1:16
subplot(4, 4, i); % Create each subplot
plot(x, y);
% Add title to each subplot
title(sprintf('Cat %d', i)); % Change "Subplot" to "Cat"
% Adjust subplot spacing
if mod(i, 4) ~= 1
ax = gca;
ax.YAxis.Visible = 'off';
end
if i <= 12
ax.XAxis.Visible = 'off';
end
% Add partition lines
if i > 4
ax = gca;
hold on;
line([min(x)-0.5, min(x)-0.5], ylim, 'Color', 'r', 'LineStyle', '--', 'LineWidth', 1.5);
hold off;
end
if i <= 12 && mod(i, 4) ~= 0
ax = gca;
hold on;
line(xlim, [min(y)-2, min(y)-2], 'Color', 'r', 'LineStyle', '--', 'LineWidth', 1.5);
hold off;
end
end
See Also
Categories
Find more on Title in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!