How to plot with plotconfusion into subplots?

Hi,
I have a problem with subplots of the figures created with plotconfusion. I tried it like this, but the result is only one plot, no subplot.
a=[1 1 0 1 0 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0];
b=[1 0 1 1 0 1 1 0 1 0 1 0 0 0 1 1 0 0 1 0];
c=[1 1 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 0]
figure(1)
subplot(2,1,1)
plotconfusion(a,b)
subplot(2,1,2)
plotconfusion(a,c)
Does somebody know how to make it in subplots? Thanks for your help!

 Respuesta aceptada

Daniel Shub
Daniel Shub el 31 de Mayo de 2013

0 votos

The code for plotconfusion is available. It doesn't support an axis handle argument and does not plot into the current axis, rather it overwrites the figure. It seems to be a pretty complicated function that is doing much more than just plotting. I would suggest looking at the code and extracting the plotting aspects and writing your own function.

4 comentarios

Antje
Antje el 31 de Mayo de 2013
Do you know where I can find the code? I already searched for it several times as it is not the first time I tried to customize the output. But I couldn't find it.
Daniel Shub
Daniel Shub el 31 de Mayo de 2013
You should be able to see the code with type plotconfusion.m and open it in the editor with edit plotconfusion.m. If you just want the directory you can use which plotconfusion.m.
Antje
Antje el 31 de Mayo de 2013
Thanks a lot! As far as I understood the code the picture generated by plotconfusion already consists of subplots. Therefore it is not easily possible to put some of them together in one figure. At least good to know! ;)
José-Luis
José-Luis el 31 de Mayo de 2013
Just curious, but my answer seems to do just that. What was wrong with it?

Iniciar sesión para comentar.

Más respuestas (1)

José-Luis
José-Luis el 31 de Mayo de 2013
Editada: José-Luis el 31 de Mayo de 2013
You could always copy all the objects generated by plotconfusion into the subplot axes:
a=[1 1 0 1 0 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0];
b=[1 0 1 1 0 1 1 0 1 0 1 0 0 0 1 1 0 0 1 0];
c=[1 1 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 0];
figure(1)
plotconfusion(a,b)
aH(1) = gca;
acH(1) = {flipud(allchild(aH(1)))};
figure(2)
plotconfusion(a,c)
aH(2) = gca;
acH(2) = {flipud(allchild(gca))};
figure(3)
sH(1) = subplot(2,1,1);
sH(2) = subplot(2,1,2);
for ii = 1:numel(acH{1});
copyobj(acH{1}(ii),sH(1));
copyobj(acH{2}(ii),sH(2));
end
set(sH,'Visible','off');

3 comentarios

Antje
Antje el 3 de Jun. de 2013
Sorry, I haven't seen your answer before. It really works. I have all information in subplots. Only the layout has changed, seems that everything has turned around. Also changing the order in the loop did not change anything in the figure order. It is a great idea and I will keep it in mind to solve other problems, but in my special case I need the confusion plot in the right order. Do you also know how to do that?
Thanks so much for your answer!
I know this is a super dead question, but adding this after the subplot initialization parts should fix the problem:
a=[1 1 0 1 0 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0];
b=[1 0 1 1 0 1 1 0 1 0 1 0 0 0 1 1 0 0 1 0];
c=[1 1 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 0];
figure(1)
plotconfusion(a,b)
aH(1) = gca;
acH(1) = {flipud(allchild(aH(1)))};
figure(2)
plotconfusion(a,c)
aH(2) = gca;
acH(2) = {flipud(allchild(gca))};
figure(3)
sH(1) = subplot(2,1,1);
set(sH(1),'YDir', 'reverse') %added
sH(2) = subplot(2,1,2);
set(sH(2),'YDir', 'reverse') %added
for ii = 1:numel(acH{1});
copyobj(acH{1}(ii),sH(1));
copyobj(acH{2}(ii),sH(2));
end
set(sH,'Visible','off');
Fatih Erden
Fatih Erden el 8 de Sept. de 2018
Thank you both. I was looking for a solution to put the pop-up confusion plot in a gui. It worked perfectly.

Iniciar sesión para comentar.

Categorías

Preguntada:

el 31 de Mayo de 2013

Comentada:

el 8 de Sept. de 2018

Community Treasure Hunt

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

Start Hunting!

Translated by