Plotting a matrix of line plots
Show older comments
Hi!
I have to plot multiple line plots in a matrix. So for example, consider that I have 2 variables x and y and I have 3 data sets of each, i.e x1y1 x2y2 x3y3.
I need to plot this data in a matrix form of 6x6, i.e 36 individual graphs. There's an image of the expected graph below. Any help is much appreciated!

7 Comments
KSSV
on 12 Nov 2021
What are the dimensions of each? Attach your data.
Manas Pratap
on 12 Nov 2021
KSSV
on 12 Nov 2021
The data is scattered data. What do you expect? You want multiple lines as shown in the attched image?
Manas Pratap
on 12 Nov 2021
Image Analyst
on 12 Nov 2021
Did you try calling subplot() a bunch of times like I showed you below? You can also call nexttile().
Manas Pratap
on 13 Nov 2021
Image Analyst
on 13 Nov 2021
Answers (4)
KSSV
on 12 Nov 2021
x1 = rand ; y1 = rand;
x2 = rand ; y2 = rand ;
x3 = rand ; y3 = rand ;
[X,Y] = meshgrid([x1 y1 x2 y2 x3 y3]) ;
Image Analyst
on 12 Nov 2021
Try subplot(). Adapt as needed.
numPoints = 10;
v1 = sort(rand(1, numPoints));
v2 = sort(rand(1, numPoints));
v3 = sort(rand(1, numPoints));
v4 = sort(rand(1, numPoints));
v5 = sort(rand(1, numPoints));
v6 = sort(rand(1, numPoints));
% Concatenate
v = {v1;v2;v3;v4;v5;v6}
rows = numel(v)
for k1 = 1 : rows
for k2 = 1 : rows
thisx = v{k1};
thisy = v{k2};
subplot(rows, rows, rows*(k1-1)+k2)
plot(thisx, thisy, 'b-', 'Linewidth', 2)
grid on;
drawnow;
end
end

Yusuf Suer Erdem
on 12 Nov 2021
0 votes
x1 = rand; y1 = rand;
x2 = rand; y2 = rand;
x3 = rand; y3 = rand;
[X,Y] = meshgrid([x1 y1 x2 y2 x3 y3]);
plot(X,Y)
Add plot(X,Y) command below it.
Image Analyst
on 13 Nov 2021
@Manas Pratap since you said in a comment "The x and y axis should only come up on the sides of the entire image, not individually for each plot", you can turn the tick marks off except in the first column or last row:
numPoints = 10;
v1 = sort(rand(1, numPoints));
v2 = sort(rand(1, numPoints));
v3 = sort(rand(1, numPoints));
v4 = sort(rand(1, numPoints));
v5 = sort(rand(1, numPoints));
v6 = sort(rand(1, numPoints));
% Concatenate
v = {v1;v2;v3;v4;v5;v6}
rows = numel(v)
for k1 = 1 : rows
for k2 = 1 : rows
thisx = v{k1};
thisy = v{k2};
subplot(rows, rows, rows*(k1-1)+k2)
plot(thisx, thisy, 'b-', 'Linewidth', 2)
grid on;
drawnow;
% Turn off y axis except if it's the first column.
if k2 > 1
yticks([]);
end
% Turn off x axis except if it's the last row.
if k1 < rows
xticks([]);
end
end
end

4 Comments
Manas Pratap
on 13 Nov 2021
Image Analyst
on 13 Nov 2021
numPoints = 10;
v1 = sort(rand(1, numPoints));
v2 = sort(rand(1, numPoints));
v3 = sort(rand(1, numPoints));
v4 = sort(rand(1, numPoints));
v5 = sort(rand(1, numPoints));
v6 = sort(rand(1, numPoints));
% Concatenate
v = {v1;v2;v3;v4;v5;v6}
rows = numel(v)
for k1 = 1 : rows
for k2 = 1 : rows
thisx = v{k1};
thisy = v{k2};
subplot(rows, rows, rows*(k1-1)+k2)
if k1 == k2
plot(thisx, thisy, 'b-', 'Linewidth', 2)
else
scatter(thisx, thisy, 'filled')
end
grid on;
drawnow;
% Turn off y axis except if it's the first column.
if k2 > 1
yticks([]);
end
% Turn off x axis except if it's the last row.
if k1 < rows
xticks([]);
end
end
end

Manas Pratap
on 13 Nov 2021
Image Analyst
on 14 Nov 2021
Scatter is not a script. It's a built in function. You did not name your script "scatter.m" did you? You can't (or shouldn't) name your script after built-in functions like scatter or else you cannot run those built-in functions anymore.
Categories
Find more on Polar Plots 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!