Creating subplots based on a cell array
显示 更早的评论
Hi,
If I have two cells like this:
cell1 = {'AA' 'AA' 'BC' 'BC' 'BC' 'DD' 'DD'; 1 2 3 4 5 6 7; 7 6 5 4 3 2 1; 5 9 8 7 6 5 4}
cell2 = {'AA' 'AA' 'BC' 'BC' 'BC' 'DD' 'DD'; 3 4 5 6 7 8 9; 2 3 4 5 6 7 8; 9 8 7 6 5 4 3}
Is there a way to create subplots based on matching the strings from the first row, where there is not necessarily an equal number of strings for all?
The final figures would look something like this:



Thank you!
4 个评论
the cyclist
2023-7-11
Is the pattern of alphabetic characters (e.g. 'AA') guaranteed to be identical between the two cell arrays?
Liam
2023-7-11
Liam
2023-7-11
采纳的回答
更多回答(1 个)
cell1 = {'AA' 'AA' 'BC' 'BC' 'BC' 'DD' 'DD'; 1 2 3 4 5 6 7; 7 6 5 4 3 2 1; 5 9 8 7 6 5 4};
cell2 = {'AA' 'AA' 'BC' 'BC' 'BC' 'DD' 'DD'; 3 4 5 6 7 8 9; 2 3 4 5 6 7 8; 9 8 7 6 5 4 3};
numbers1 = cell2mat(cell1(2:end,:));
numbers2 = cell2mat(cell2(2:end,:));
[uniqueAlpha,~,indexFromUniqueToAll] = unique(cell1(1,:));
numberUniqueAlpha = numel(uniqueAlpha);
for na = 1:numberUniqueAlpha
columnsThisAlpha = find(indexFromUniqueToAll==na);
numberColumnsThisAlpha = numel(columnsThisAlpha);
figure
tt = tiledlayout(numberColumnsThisAlpha,1);
title(tt,uniqueAlpha(na))
for nc = 1:numberColumnsThisAlpha
nexttile
plot(numbers1(:,nc),numbers2(:,nc))
end
end
类别
在 帮助中心 和 File Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



