Borrar filtros
Borrar filtros

How do I edit the legend when I have *many* entries (but only 2 types of data)

116 visualizaciones (últimos 30 días)
Hello Community,
I have a presentation problem regarding a plot legend that I hope you can help with. This situation is that I plot a bar chart and need to identify a single bar with a different colour when the data hits certain conditions, coded as:
% raise figure
figure(1)
hold on
% set color bar
cm = [0.90 0.90 0.90; 0 0 0];
% run for loop to colour data individually & when data conditions are met
for i = 1:length(pltvar1srt)
h=bar(i,pltvar1srt(i));
if pltvar1srt(i) == 1.71 && 4
set(h,'FaceColor',cm(1,:));
else
set(h,'FaceColor',cm(2,:));
end
end
hold off
and this produces the plot I need:
The problem is when I add the legend, due to the way I have coloured the bar, I get many data entries:
Using the legend help, I have tried to write the legend using a variety of calls - all of which haven't worked unfortunately:
legend ([data1 data10]);
legend ([data data10]);
legend ([pltvar1srt.9 pltvar1srt.10]);
legend ([pltvar1srt(9) pltvar1srt(10)]);
legend ([cm(1,:) cm(2,:)], 'Data 1', 'Data 2');
% etc. etc.
but still no luck. I have also looked at this useful function - but again, couldn't get it to work in the way I needed.
I simply want the legend to have the two entries ie 'Black Data' and 'Grey Data' and be coloured appropriately.
Can anyone offer any help please?
Many thanks,
10B.
  1 comentario
10B
10B el 19 de Jul. de 2016
Reading through various examples, I starting to think that 'hggroup' may be part of the solution, similar to the example here, the drawback is that I am not creating the plot in the same way.
I'm still working on this - but would be grateful of some help if possible!

Iniciar sesión para comentar.

Respuesta aceptada

Thorsten
Thorsten el 19 de Jul. de 2016
if pltvar1srt(i) == 1.71 && 4
set(h,'FaceColor',cm(1,:));
hlegend(1) = h;
else
set(h,'FaceColor',cm(2,:));
hlegend(2) = h;
end
and then
legend(hlegend, {'Data 1' 'Data 2'})
  1 comentario
10B
10B el 21 de Jul. de 2016
Editada: 10B el 21 de Jul. de 2016
Ah! Of course - Many thanks Thorsten.
I had experimented with:
h=set(h,'FaceColor',cm(1,:)); etc.
at one point which obviously didn't work, but I was sort of along the right track, so thanks for helping me out.
You never know, in just 5 or 6 more years of this pain, I may just learn to master the basics...

Iniciar sesión para comentar.

Más respuestas (1)

Sharad Singhania
Sharad Singhania el 14 de Jul. de 2019
You can also do it from plot editor.
Go to plot editor > Property editor -Legend > more properties... > string > click on array icon> modify as per your requirement.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by