Plot and legend colors don't match

1 view (last 30 days)
Gunnar
Gunnar on 28 Aug 2014
Commented: RG on 29 Jan 2019
I suspect it's because I'm using transparency (i.e. FaceAlpha) in my plot. Example code run on MATLAB r2013a:
clear all, close all
x = 1:10;
y = 100:100:200;
z1 = 1*x;
z2 = 3*x;
[X,Y] = meshgrid(x,y);
Z = [z1;z2];
fig = 0; fig = fig + 1; figure(fig);
hMesh = mesh(X,Y,Z);
set(gca,'XLim',[1 10],...
'YLim',[100 200],...
'XTick',[0:1:10],...
'YTick',[100:100:200]);
set(hMesh,'FaceColor',[1 0 0],'EdgeColor',[1 0 0],'FaceAlpha',0,'EdgeAlpha',0.4,'LineWidth',3);
hLegend = legend('Test','Location','Northeast');
box on

Accepted Answer

José-Luis
José-Luis on 28 Aug 2014
Edited: José-Luis on 28 Aug 2014
legendObj = get(hLegend,'Children');
your_patch = findobj(legendObj,'Type','patch');
set(your_patch,'FaceAlpha',0,'EdgeAlpha',0.4);
Please accept the answer that best solves your problem.
  1 Comment
RG
RG on 29 Jan 2019
Hi, there, I'm trying to solve similar issue, legend colors to match the plot line colors and can't find a solution, so I'm asking for help here. Here is the code:
Color = distinguishable_colors(numel(donuts));
for m = 1 : max(data.numberOfDonutsPerShelf)-1
i(m) = m;
i = i';
end
for n = 1 : numel(donuts)
hi(n,:) = plot(i,data.donutsFrequencies(:,n),'-o','color',Color(n,:));
end
hold on
legend(hi,strcat(num2str(donutsShelves),'N'))
legend boxoff

Sign in to comment.

More Answers (1)

Chad Greene
Chad Greene on 28 Aug 2014
You could use legalpha.
  1 Comment
Gunnar
Gunnar on 28 Aug 2014
Edited: Gunnar on 28 Aug 2014
Thanks, Chad! Great script, though I choose the answer below since it provides no dependencies such as an extra script.
Hopefully, MATLAB can correct this in a future version of MATLAB.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!