Inserting Confusion Matrix and ROC plot in one figure

4 ビュー (過去 30 日間)
John F
John F 2022 年 6 月 24 日
回答済み: John F 2022 年 6 月 25 日
I am trying to plot a Confusion Matrix and a ROC plot in one figure but I can't seem to be able to get it to work. I used the solution provided here but it only plots the ROC plot. Here's my code:
% Plot the Confusion Matrix
cm = confusionchart(targets,predictions,...
'ColumnSummary','column-normalized','RowSummary','row-normalized',...
'Title','PNN Confusion Matrix');
% Plot the ROC plot
classes = ["MyClass 1","MyClass 2","MyClass3","MyClass4","MyClass5","MyClass6"];
roc = plotroc(targets,predictions);
tmp = get(roc,'Children');
lgnd = tmp(2); % Get the ROC plot legend
lgnd.String = cellstr(classes);
% Modified MathWorks Support Team code
figure(3)
ax = zeros(2,1);
for i = 1:2
ax(i)=subplot(2,1,i);
end
for i = 1:2
figure(i)
h = get(gcf,'Children');
newh = copyobj(h,3);
for j = 1:length(newh)
posnewh = get(newh(j),'Position');
possub = get(ax(i),'Position');
set(newh(j),'Position',...
[posnewh(1) possub(2) posnewh(3) possub(4)])
end
delete(ax(i));
end
figure(3)
The plots work correctly if plotted individually but not together.

採用された回答

John F
John F 2022 年 6 月 25 日
This is the solution I found
% Plot the Confusion Matrix
hold off
f = figure(1);
cm = confusionchart(targets,predictions,...
'ColumnSummary','column-normalized','RowSummary','row-normalized',...
'Title','PNN Confusion Matrix','Parent',f);
% Plot the ROC plot
classes = ["MyClass 1","MyClass 2","MyClass3","MyClass4","MyClass5","MyClass6"];
figure(2)
roc = plotroc(targets,predictions);
tmp = get(roc,'Children');
lgnd = tmp(2);
lgnd.String = cellstr(classes);
figure(3)
ax = zeros(2,1);
for i = 1:2
ax(i)=subplot(1,2,i);
end
% Modified MathWorks Support Team code
for i = 1:2
figure(i)
h = get(gcf,'Children');
newh = copyobj(h,3);
for j = 1:length(newh)
%posnewh = get(newh(j),'Position');
possub = get(ax(i),'Position');
set(newh(j),'Position',...
[possub(1) possub(2) possub(3) possub(4)])
end
delete(ax(i));
end
close([f roc])
ft = figure(3);
tmp = get (ft,'Children');
lgnd = tmp(2);
lgnd.Location = 'best';

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDescriptive Statistics and Visualization についてさらに検索

製品


リリース

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by