Legend Color and plot color mismatch

조회 수: 43 (최근 30일)
Zachery
Zachery 2024년 5월 9일
편집: Josh 2024년 5월 9일
I have 8 sets of data I would like to plot and want every 2 to have the same color in the plot and in the legend. I would also like every 2 plots to have the same color for example I am trying to have plots 1 & 2 to have the same color plots 3 & 4 to have another color etc. For some reason when I plot the data the color on the plots themselves is fine but the legend color is wrong. The legend for plot A1 and A2 have default colors that I never set and the rest of legend colors are skewed by 1. For example I get B1 & B2 to be green instrad of yellow, I get C1 % C2 to be yellow instead of magenta etc. I have tried 2 methods for this one using the 'legend_bonus' and setting the legend that way and another method that is shown but commented out is when using the set for the plot make the displayname as shown either wayt i get the same result. Why is this happening and how to I fix this.
Thank you
legend_bonus = {'A1 ', 'A2 ','B1 ', 'B2 ','C1 ', 'C2 ','D1 ', 'D2 '}
%
h1 = plot(zplot_Ax1, zplot_Ay1,'o-','Color','green');
set( h1, 'LineWidth', 4)%, 'DisplayName', 'A1 ');
hold on
h1 = plot(zplot_Ax2, zplot_Ay2,'o-','Color','green');
set( h1, 'LineWidth', 4)%, 'DisplayName', 'A2 ');
hold on
%
h1 = plot(zplot_Bx1, zplot_By1,'o-','Color','yellow');
set( h1, 'LineWidth', 4)%, 'DisplayName', 'B1 ');
hold on
h1 = plot(zplot_Bx2, zplot_By2,'o-','Color','yellow');
set( h1, 'LineWidth', 4)%, 'DisplayName', 'B2 ');
hold on
%
h1 = plot(zplot_Cx1, zplot_Cy1,'o-','Color','magenta');
set( h1, 'LineWidth', 4)%, 'DisplayName', 'C1 ');
hold on
h1 = plot(zplot_Cx2, zplot_Cy2,'o-','Color','magenta');
set( h1, 'LineWidth', 4)%, 'DisplayName', 'C2 ');
hold on
%
h1 = plot(zplot_Dx1, zplot_Dy1,'o-','Color','red');
set( h1, 'LineWidth', 4)%, 'DisplayName', 'D1 ');
hold on
h1 = plot(zplot_Dx2, zplot_Dy2,'o-','Color','red');
set( h1, 'LineWidth', 4)%, 'DisplayName', 'D2 ');
hold on
title('title');
xlabel('X axis');
ylabel('Y axis');
ax = gca;
ax.FontSize = 20;
legend(legend_bonus);
legend('Location', 'best');
  댓글 수: 2
Cris LaPierre
Cris LaPierre 2024년 5월 9일
Here's an attempt to create a runnable example. The issue is not reproducible here.
zplot_Ax1 = rand(1,10);
zplot_Ax2 = rand(1,10);
zplot_Bx1 = rand(1,10);
zplot_Bx2 = rand(1,10);
zplot_Cx1 = rand(1,10);
zplot_Cx2 = rand(1,10);
zplot_Dx1 = rand(1,10);
zplot_Dx2 = rand(1,10);
zplot_Ay1 = rand(1,10);
zplot_Ay2 = rand(1,10);
zplot_By1 = rand(1,10);
zplot_By2 = rand(1,10);
zplot_Cy1 = rand(1,10);
zplot_Cy2 = rand(1,10);
zplot_Dy1 = rand(1,10);
zplot_Dy2 = rand(1,10);
legend_bonus = {'A1 ', 'A2 ','B1 ', 'B2 ','C1 ', 'C2 ','D1 ', 'D2 '};
%
h1 = plot(zplot_Ax1, zplot_Ay1,'o-','Color','green','LineWidth', 4);
hold on
h1 = plot(zplot_Ax2, zplot_Ay2,'o-','Color','green','LineWidth', 4);
%
h1 = plot(zplot_Bx1, zplot_By1,'o-','Color','yellow','LineWidth', 4);
h1 = plot(zplot_Bx2, zplot_By2,'o-','Color','yellow','LineWidth', 4);
%
h1 = plot(zplot_Cx1, zplot_Cy1,'o-','Color','magenta','LineWidth', 4);
h1 = plot(zplot_Cx2, zplot_Cy2,'o-','Color','magenta','LineWidth', 4);
%
h1 = plot(zplot_Dx1, zplot_Dy1,'o-','Color','red','LineWidth', 4);
h1 = plot(zplot_Dx2, zplot_Dy2,'o-','Color','red','LineWidth', 4);
hold off
title('title');
xlabel('X axis');
ylabel('Y axis');
legend(legend_bonus);
Josh
Josh 2024년 5월 9일
편집: Josh 2024년 5월 9일
it may be all the hold on commands and multiple step process of creating plots and then updating colors was giving you an undesired experience while you are running/debugging the code line by line...but the end result seems fine

댓글을 달려면 로그인하십시오.

답변 (1개)

Josh
Josh 2024년 5월 9일
code seems to work fine for me so might be something more local to your machine or version of MATLAB? sorry i'm not able to provide a clearer answer to your issue
...copy & pasted, trimmed out redundant lines (no need for multiple 'hold on') and added in some random data to plot. figure attached below was produced from running the code:
legend_bonus = {'A1 ', 'A2 ','B1 ', 'B2 ','C1 ', 'C2 ','D1 ', 'D2 '}
legend_bonus = 1x8 cell array
{'A1 '} {'A2 '} {'B1 '} {'B2 '} {'C1 '} {'C2 '} {'D1 '} {'D2 '}
%
zplot_Ax1=randi(10,1,10);
zplot_Ay1=randi(10,1,10);
zplot_Ax2=randi(10,1,10);
zplot_Ay2=randi(10,1,10);
plot(zplot_Ax1, zplot_Ay1,'o-','Color','green','LineWidth',4);
hold on
plot(zplot_Ax2, zplot_Ay2,'o-','Color','green','LineWidth',4);
%
zplot_Bx1=randi(10,1,10);
zplot_By1=randi(10,1,10);
zplot_Bx2=randi(10,1,10);
zplot_By2=randi(10,1,10);
plot(zplot_Bx1, zplot_By1,'o-','Color','yellow','LineWidth',4);
plot(zplot_Bx2, zplot_By2,'o-','Color','yellow','LineWidth',4);
%
zplot_Cx1=randi(10,1,10);
zplot_Cy1=randi(10,1,10);
zplot_Cx2=randi(10,1,10);
zplot_Cy2=randi(10,1,10);
plot(zplot_Cx1, zplot_Cy1,'o-','Color','magenta','LineWidth',4);
plot(zplot_Cx2, zplot_Cy2,'o-','Color','magenta','LineWidth',4);
%
zplot_Dx1=randi(10,1,10);
zplot_Dy1=randi(10,1,10);
zplot_Dx2=randi(10,1,10);
zplot_Dy2=randi(10,1,10);
plot(zplot_Dx1, zplot_Dy1,'o-','Color','red','LineWidth',4);
plot(zplot_Dx2, zplot_Dy2,'o-','Color','red','LineWidth',4);
title('title');
xlabel('X axis');
ylabel('Y axis');
ax = gca;
ax.FontSize = 20;
legend(legend_bonus);
legend('Location', 'best');

카테고리

Help CenterFile Exchange에서 Legend에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by