How to add a single legent with multiple subplots with out overlapping on plots?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Vishnuvardhan Naidu Tanga
el 19 de Oct. de 2022
Hello All,
I am trying to add a add a common legend for all my subplots in a graph. But I dont have extra space for the legend to add on the plots. They are overlapping on one another. I need something like in the image. Can some one please hlp me with it. My code is as follows:
Thanks in advance.
Z = readtable('Excel.xlsx') ;
data = table2array(Z) ;
subplot(2,3,1)
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
annotation('textbox', [0.25, 0.77, 0.1, 0.1], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
subplot(2,3,2)
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
annotation('textbox', [0.53, 0.77, 0.1, 0.1], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
subplot(2,3,3)
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
annotation('textbox', [0.811, 0.77, 0.1, 0.1], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
title('Tangential velocity fluctuations')
subplot(2,3,4)
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
annotation('textbox', [0.25, 0.32, 0.1, 0.1], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
subplot(2,3,5)
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
annotation('textbox', [0.53, 0.32, 0.1, 0.1], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
subplot(2,3,6)
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
annotation('textbox', [0.811, 0.32, 0.1, 0.1], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
fig = gcf;
fig.Position(3) = fig.Position(3) + 250;
legend('Plot1', 'Plot2', 'Plot3', 'Plot4', 'Location', 'bestoutside', 'FontSize',10);
Lgnd = legend('show');
lgd.FontSize = 18;
Lgnd.Position(1) = 0.8;
Lgnd.Position(2) = 0.4;
sgtitle(["titel"])
x0=12;
y0=2;
width=1200;
height=760;
set(gcf,'position',[x0,y0,width,height])
set(gcf,'PaperOrientation','landscape');
3 comentarios
Jan Böttner
el 15 de Ag. de 2023
Movida: Voss
el 15 de Ag. de 2023
Hi!
I am having a similar issue, only that I wnat my Legend below the tiles.
Unfortunately it covers a part of the xlabel. Hast anyone an Idea on how to fix this?
figure('Position',[1 1 1000 400])
COtwo = tiledlayout(1,3);
nexttile
%-------CO2-emissions--today----------------------------
h_ss = bar(out.emissions.today{:,1},out.emissions.today{:,[10 12]},'stacked','BarWidth',1/3.5,'XData',out.emissions.today{:,1}-1/3.5,'FaceAlpha',0.5,'EdgeColor','none');
h_ss(1).FaceColor = [0 0.4470 0.7410];
h_ss(2).FaceColor = [0.26 0.75 0.98];
hold on
h_us = bar(out.emissions.today{:,1},out.emissions.today{:,[7 8]},'stacked','BarWidth',1/3.5,'XData',out.emissions.today{:,1},'FaceAlpha',0.5,'EdgeColor','none');
h_us(1).FaceColor = [0.4660 0.6740 0.1880] ; %[0.26 0.44 0.26];
h_us(2).FaceColor = [0.6660 0.8740 0.4880];
hold on
h_us = bar(out.emissions.today{:,1},out.emissions.today{:,[17 11]},'stacked','BarWidth',1/3.5,'XData',out.emissions.today{:,1}+1/3.5,'FaceAlpha',0.5,'EdgeColor','none');
h_us(1).FaceColor = [0.7 0.7 0.7];
h_us(2).FaceColor = [0.83 0.83 0.83];
hold off
%legend(out.emissions.today.Properties.VariableNames([10,12,7,8,17,11]), ...
% 'Location','SouthOutside','NumColumns',1,'Orientation','Horizontal')
ylabel('CO2-Equivalents');
xlabel('Bivalence Temperature');
xscale = Tmin:2:Tmax;
xticks(Tmin-2:2:Tmax+2);
xticklabels({'HP',xscale,'LGB'})
axis([out.emissions.today{1,1}-1,out.emissions.today{end,1}+1,0,3.5])
txt = {'CO2-Emission factors:',['Biomass = ' num2str(Basisdaten.Emissionsfaktor.Biomasse.today) ' kg/kWh'], ['Electricity = ' num2str(Basisdaten.Emissionsfaktor.Strom.today) ' kg/kWh'],};
dim = [0.228 0.95 0 0]; %[.365 .87 0 0];
annotation('textbox',dim,'String',txt,'FitBoxToText','on');
%-------CO2-emissions--midterm----------------------------
nexttile
h_ss = bar(out.emissions.midterm{:,1},out.emissions.midterm{:,[10 12]},'stacked','BarWidth',1/3.5,'XData',out.emissions.midterm{:,1}-1/3.5,'FaceAlpha',0.5,'EdgeColor','none');
h_ss(1).FaceColor = [0 0.4470 0.7410];
h_ss(2).FaceColor = [0.26 0.75 0.98];
hold on
h_us = bar(out.emissions.midterm{:,1},out.emissions.midterm{:,[7 8]},'stacked','BarWidth',1/3.5,'XData',out.emissions.midterm{:,1},'FaceAlpha',0.5,'EdgeColor','none');
h_us(1).FaceColor = [0.4660 0.6740 0.1880] ; %[0.26 0.44 0.26];
h_us(2).FaceColor = [0.6660 0.8740 0.4880];
hold on
h_us = bar(out.emissions.midterm{:,1},out.emissions.midterm{:,[17 11]},'stacked','BarWidth',1/3.5,'XData',out.emissions.midterm{:,1}+1/3.5,'FaceAlpha',0.5,'EdgeColor','none');
h_us(1).FaceColor = [0.7 0.7 0.7];
h_us(2).FaceColor = [0.83 0.83 0.83];
legend(out.emissions.midterm.Properties.VariableNames([10,12,7,8,17,11]), ...
'Location','southoutside','NumColumns',6,'Orientation','Horizontal')
ylabel('CO2-Equivalents');
xlabel('Bivalence Temperature');
xscale = Tmin:2:Tmax;
xticks(Tmin-2:2:Tmax+2);
xticklabels({'HP',xscale,'LGB'})
axis([out.emissions.midterm{1,1}-1,out.emissions.midterm{end,1}+1,0,3.5])
txt = {'CO2-Emission factors:',['Biomass = ' num2str(Basisdaten.Emissionsfaktor.Biomasse.midterm) ' kg/kWh'], ['Electricity = ' num2str(Basisdaten.Emissionsfaktor.Strom.midterm) ' kg/kWh'],};
dim = [0.545 0.95 0 0]; %[.365 .87 0 0];
annotation('textbox',dim,'String',txt,'FitBoxToText','on');
%-------CO2-emissions--longterm----------------------------
nexttile
h_ss = bar(out.emissions.longterm{:,1},out.emissions.longterm{:,[10 12]},'stacked','BarWidth',1/3.5,'XData',out.emissions.longterm{:,1}-1/3.5,'FaceAlpha',0.5,'EdgeColor','none');
h_ss(1).FaceColor = [0 0.4470 0.7410];
h_ss(2).FaceColor = [0.26 0.75 0.98];
hold on
h_us = bar(out.emissions.longterm{:,1},out.emissions.longterm{:,[7 8]},'stacked','BarWidth',1/3.5,'XData',out.emissions.longterm{:,1},'FaceAlpha',0.5,'EdgeColor','none');
h_us(1).FaceColor = [0.4660 0.6740 0.1880] ; %[0.26 0.44 0.26];
h_us(2).FaceColor = [0.6660 0.8740 0.4880];
hold on
h_us = bar(out.emissions.longterm{:,1},out.emissions.longterm{:,[17 11]},'stacked','BarWidth',1/3.5,'XData',out.emissions.longterm{:,1}+1/3.5,'FaceAlpha',0.5,'EdgeColor','none');
h_us(1).FaceColor = [0.7 0.7 0.7];
h_us(2).FaceColor = [0.83 0.83 0.83];
%legend(out.emissions.longterm.Properties.VariableNames([10,12,7,8,17,11]), ...
% 'Location','SouthOutside','NumColumns',1,'Orientation','Horizontal')
ylabel('CO2-Equivalents');
xlabel('Bivalence Temperature');
xscale = Tmin:2:Tmax;
xticks(Tmin-2:2:Tmax+2);
xticklabels({'HP',xscale,'LGB'})
axis([out.emissions.longterm{1,1}-1,out.emissions.longterm{end,1}+1,0,3.5])
txt = {'CO2-Emission factors:',['Biomass = ' num2str(Basisdaten.Emissionsfaktor.Biomasse.longterm) ' kg/kWh'], ['Electricity = ' num2str(Basisdaten.Emissionsfaktor.Strom.longterm) ' kg/kWh'],};
dim = [0.865 0.95 0 0];
annotation('textbox',dim,'String',txt,'FitBoxToText','on');
%-----plot-properties-------------------------------------------
COtwo.TileSpacing = 'compact';
COtwo.Padding = 'compact';
set(gcf,'WindowState','maximized');
Respuesta aceptada
Star Strider
el 19 de Oct. de 2022
An alternative —
Z = readtable('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1161928/Excel.xlsx', 'VariableNamingRule','preserve') ;
data = table2array(Z) ;
subplot(2,4,1)
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
% hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
% hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
pos = get(gca,'Position'); % ADDED
annotation('textbox', [pos(1)+0.1, 0.77, 0.1, 0.1], 'String', "X", 'FontSize',12)
% annotation('textbox', [0.25, 0.77, 0.1, 0.1], 'String', "X", 'FontSize',12) % CHANGED
grid on
xlabel('x');
ylabel('y');
subplot(2,4,2)
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
pos = get(gca,'Position'); % ADDED
annotation('textbox', [pos(1)+0.1, 0.77, 0.1, 0.1]+[0.01 0 0 0], 'String', "X", 'FontSize',12)
% annotation('textbox', [0.53, 0.77, 0.1, 0.1]+[0.01 0 0 0], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
subplot(2,4,3)
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
pos = get(gca,'Position'); % ADDED
annotation('textbox', [pos(1)+0.1, 0.77, 0.1, 0.1]+[0.81*0.01 0 0 0], 'String', "X", 'FontSize',12)
% annotation('textbox', [0.811, 0.77, 0.1, 0.1]+[0.81*0.01 0 0 0], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
title('Tangential velocity fluctuations')
subplot(2,4,5)
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
pos = get(gca,'Position'); % ADDED
annotation('textbox', [pos(1)+0.1, 0.32, 0.1, 0.1]+[0.25*0.01 0 0 0], 'String', "X", 'FontSize',12)
% annotation('textbox', [0.25, 0.32, 0.1, 0.1]+[0.25*0.01 0 0 0], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
subplot(2,4,6)
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
pos = get(gca,'Position'); % ADDED
annotation('textbox', [pos(1)+0.1, 0.32, 0.1, 0.1]+[0.53*0.01 0 0 0], 'String', "X", 'FontSize',12)
% annotation('textbox', [0.53, 0.32, 0.1, 0.1]+[0.53*0.01 0 0 0], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
subplot(2,4,7)
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
pos = get(gca,'Position'); % ADDED
annotation('textbox', [pos(1)+0.1, 0.32, 0.1, 0.1]+[0.81*0.01 0 0 0], 'String', "X", 'FontSize',12)
% annotation('textbox', [0.811, 0.32, 0.1, 0.1]+[0.81*0.01 0 0 0], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
fig = gcf;
fig.Position(3) = fig.Position(3) + 250;
legend('Plot1', 'Plot2', 'Plot3', 'Plot4', 'Location', 'bestoutside', 'FontSize',10);
Lgnd = legend('show');
lgd.FontSize = 18;
Lgnd.Position(1) = 0.8;
Lgnd.Position(2) = 0.4;
hsp2448 = subplot(2,4,[4 8]);
% get(hsp2448)
hsp2448.Visible = 'off';
Lgnd.Position = hsp2448.Position+[0 +0.25 0 -0.55]; % Change Last 3 Values As Required
sgtitle(["titel"])
x0=12;
y0=2;
width=1200;
height=760;
set(gcf,'position',[x0,y0,width,height])
set(gcf,'PaperOrientation','landscape');
.
6 comentarios
Kevin Holly
el 20 de Oct. de 2022
Looks like my answer got deleted, so reposting here. I used nexttile instead of subplot.
Z = readtable('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1161928/Excel.xlsx', 'VariableNamingRule','preserve') ;
data = table2array(Z);
tiledlayout(2,3)
nexttile
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
annotation('textbox', [0.25, 0.77, 0.1, 0.1], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
nexttile
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
annotation('textbox', [0.53, 0.77, 0.1, 0.1], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
nexttile
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
annotation('textbox', [0.811, 0.77, 0.1, 0.1], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
title('Tangential velocity fluctuations')
nexttile
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
annotation('textbox', [0.25, 0.32, 0.1, 0.1], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
nexttile
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
annotation('textbox', [0.53, 0.32, 0.1, 0.1], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
nexttile
plot(data(:,1), data(:,2), 'ks', 'linewidth', 1);
hold on
plot(data(:,3), data(:,4), 'linewidth', 2);
hold on
plot(data(:,5), data(:,6), 'linewidth', 2);
hold on
plot(data(:,7), data(:,8), 'linewidth', 2);
hold off
annotation('textbox', [0.811, 0.32, 0.1, 0.1], 'String', "X", 'FontSize',12)
grid on
xlabel('x');
ylabel('y');
fig = gcf;
fig.Position(3) = fig.Position(3) + 250;
legend('Plot1', 'Plot2', 'Plot3', 'Plot4', 'Location', 'bestoutside', 'FontSize',10);
Lgnd = legend('show');
Lgnd.FontSize = 18;
Lgnd.Position(1) = 0.8;
Lgnd.Position(2) = 0.4;
sgtitle(["titel"])
x0=12;
y0=2;
width=1200;
height=760;
set(gcf,'position',[x0,y0,width,height])
Lgnd.Layout.Tile = 'east';
Star Strider
el 20 de Oct. de 2022
I noticed it was missing.
I have no idea how it got deleted, and just assumed you deleted it. Rena Berman might have some insight into that.
Más respuestas (0)
Ver también
Categorías
Más información sobre Filter Analysis en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!