Area plot common legend

3 visualizaciones (últimos 30 días)
Hasan Isomitdinov
Hasan Isomitdinov el 29 de En. de 2019
Comentada: Star Strider el 29 de En. de 2019
Hi!
I am trying to plot my data with an area plot and I have several subplots for several countries. I just wanted to know how to set a common legend for all subplots describing each color of the plot. Thanks!
  2 comentarios
Luna
Luna el 29 de En. de 2019
What have you done so far?
Hasan Isomitdinov
Hasan Isomitdinov el 29 de En. de 2019
figure(1)
for i=1:11
subplot(4,3,i)
area(dates,[global(:,i),regional(:,i),local(:,i)],'FaceColor','flat')
a11 = sprintf('%s',country{i});
title(a11);
legend({'World','Regional','Local'},'Location','SouthOutside');
end
But this is giving me a legend for each plot separately.

Iniciar sesión para comentar.

Respuesta aceptada

Star Strider
Star Strider el 29 de En. de 2019
Some version of this idea could work:
dates = 1:5; % Create Data
G = rand(5, 11); % Create Data
R = rand(5, 11); % Create Data
L = rand(5, 11); % Create Data
country = num2cell('A'+(0:10)); % Create Data
figure(1)
for i=1:12
if i < 12
subplot(4,3,i)
area(dates,[G(:,i),R(:,i),L(:,i)],'FaceColor','flat')
a11 = sprintf('%s',country{i});
title(a11);
elseif i == 12
subplot(4,3,i)
i = 11;
area(dates,[G(:,i),R(:,i),L(:,i)],'FaceColor','flat')
set(gca,'Position',[7.5 1.25 1 1]*0.1)
set(gca, 'Visible','off')
legend({'World','Regional','Local'},'Location','best');
end
end
Run this first. (I am using R2018b.)
Then experiment with your own data to get the result you want.
  2 comentarios
Hasan Isomitdinov
Hasan Isomitdinov el 29 de En. de 2019
Thank you for your response!
Here is a little tweaked version I opted for instead which is giving me the result I wanted with a row legend underneath the figure. Any suggestions on optimizing this line would still be appreciated.
clear all;
dates = 1:5; % Create Data
G = rand(5, 11); % Create Data
R = rand(5, 11); % Create Data
L = rand(5, 11); % Create Data
country = num2cell('A'+(0:10)); % Create Data
figure(1)
for i=1:11
subplot(4,4,i)
area(dates,[G(:,i),R(:,i),L(:,i)],'FaceColor','flat')
a11 = sprintf('%s',country{i});
title(a11);
end
legend=columnlegend(3,{'World','Regional','Country-specific'});
set(legend,'Position',[1.1 1.3 7 1]*0.1);
Star Strider
Star Strider el 29 de En. de 2019
My pleasure.
I cannot run that because the ‘columnlegend’ variable does not exist in the code you posted. Also, ‘columnlegend’ is not a MATLAB function.
If my Answer helped you solve your problem, please Accept it!

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Productos


Versión

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by