Subplot the same three variables from N mat files in a folder

Hi!
I am trying to use subplot and was looking for tips on how to approach this:
There's a folder full of N .mat files, and each file contains three variables that I want to subplot (R, A, and P). Each .mat file has a unique name beginning with its date.
I am trying to subplot N rows, with 3 columns R, A and P, so that I can see and compare them all together like a gallery.
My intended code goes through each .mat file of N .mat files, loads and plots its R, A and P as columns 1, 2 and 3 of row 1 of N files.
Then it goes to the next .mat file, and loads and plots its R, A and P as columns 1, 2 and 3 of row 2 of N... etc.
..And I'd like all N to be in the same figure. I want to generate a giant figure with, say, 70 rows, and compare R, A and P as three columns alongside each other.
** Edited one day after posting to include my current approach** --
To start with, I am trying to subplot from a test folder containing 3 mat files, and am only plotting R and A variables) (so it's a 3X2 subplot).
I am using a nested for loop and an if.
Here is the code I have so far:
%%
read_folder = '...';
write_folder = '...';
cd(read_folder);
files = dir('*.mat');
N=numel(files);
R_y = [array of numbers]';
A_y = [another array of numbers]';
figure;
fig = gcf;
for i = 1:N
for j = 1:6 %will need to change this as per numel(files).
load(files(i).name, 'R', 'A')
[pathstr,name,ext] = fileparts(files(i).name);
newFilename = fullfile(pathstr,name);
subplot(N,2,j)
if mod(j,2) == 0
subplot(N,2,j);
plot(A_y, A);
else mod(j,2) == 1 ;
subplot(N,2,j);
plot(R_y, R);
end
end
cd(write_folder);
saveas(fig, Image_name, 'png');
cd(read_folder);
end
This makes a 3x2 subplot, but it plots the R and A from just the one mat file in all three rows instead of plotting from each mat file, which is what I'd like for it to do.
Thanks so much for all your tips!! :-)

8 件のコメント

TADA
TADA 2020 年 1 月 2 日
as far as I know, the figure size is limited by your screen size
TADA
TADA 2020 年 1 月 2 日
I suppose you can make a figure for each row, export it to an image file then concatenate all images to form a huge image of a figure
Veena Chatti
Veena Chatti 2020 年 1 月 3 日
Thanks for your comment, TADA.
What's a good way to concatenate images?
TADA
TADA 2020 年 1 月 3 日
編集済み: TADA 2020 年 1 月 3 日
Images are basically nxm matrices for grayscale images or nxmx3 for rgb images, so you can use vertcat or simply
[figIm1; figIm2]
You can load an image using imread, I think you need image processing toolkit though.
I never tried it with figures, it's just a crazy idea... So you'd probably have to play with it a bit to get the output you want
TADA
TADA 2020 年 1 月 3 日
編集済み: TADA 2020 年 1 月 3 日
How many subplots are you talking about? Because I assumed you meant A LOT but now you say your code generates 3x2 axes which is not too many
Veena Chatti
Veena Chatti 2020 年 1 月 3 日
編集済み: Veena Chatti 2020 年 1 月 3 日
Thanks again!
The 3X2 is just a test. I eventually want to use this code to subplot the three variables in about 150 .mat files in each folder.
TADA
TADA 2020 年 1 月 3 日
Does it really all have to be on a single figure?
It sounds like a lot of data, that's going to be hard to read
There might be a more compact way to present it all
Stephen23
Stephen23 2020 年 1 月 6 日
Note that using absolute/relative filenames is more efficient and easier to debug, comapred to using cd Changing the current directory just to access data files is not recommended.

サインインしてコメントする。

 採用された回答

Pujitha Narra
Pujitha Narra 2020 年 1 月 6 日

1 投票

As far as I understand, there must 6 subplots(for the sample code written) in a single plot, each row representing a .mat file.
But the code above is trying to make 6 subplots for each of the .mat file which explains the anomoly you are seeing.
Small changes to the code will help you.
j=1;
for i = 1:N %number of .mat files
subplot(N,3,j)
%....code to plot first variable here
j=j+1;
subplot(N,3,j);
%....code to plot second variable here
j=j+1;
subplot(N,3,j);
%....code to plot third variable here
j=j+1;
end

1 件のコメント

Veena Chatti
Veena Chatti 2020 年 1 月 10 日
Pujitha, thanks a ton for this! It now does exactly what I was looking for. I appreciate your help! Thanks again.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeGraphics Performance についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by