Effacer les filtres
Effacer les filtres

Plot legend shows same color for 2 graphs

1 vue (au cours des 30 derniers jours)
Ljix
Ljix le 4 Fév 2016
Commenté : Walter Roberson le 4 Fév 2016
I plot a coordinate system with three different graphs (three different colors), but plot legend shows same color for two of them (B and C). This is what I did
figure(1)
plot(t,y3,'r',t,y2,'g',t,y1,'b')
leg=legend('A','B','C',2)
set(leg,'Interpreter','none')
I don't see what's wrong.
  4 commentaires
Geoff Hayes
Geoff Hayes le 4 Fév 2016
But what are the dimensions? How are y2 and y1 defined? Type the following in your command window
size(y3)
size(y2)
size(y1)
What do you observe?
Ljix
Ljix le 4 Fév 2016
Modifié(e) : Walter Roberson le 4 Fév 2016
1 6000
2 6000
1 6000

Connectez-vous pour commenter.

Réponses (2)

Walter Roberson
Walter Roberson le 4 Fév 2016
Your y2 is 2 x 6000. When you plot t, y2 MATLAB is going to notice that your t is 6000 and will figure that needs to be matched to the 6000 of your y2, so MATLAB will automatically transpose your y2 to be 6000 x 2 . Then it will draw 2 lines for y2, one for each column. Those two lines are throwing off your legend. You are not drawing 3 different graphs, you are drawing 4 different graphs.
  6 commentaires
Ljix
Ljix le 4 Fév 2016
Yes, they are different size but right size is always a scalar.
Walter Roberson
Walter Roberson le 4 Fév 2016
"Solution, returned as a vector, full matrix, or sparse matrix. If A is an m-by-n matrix and B is an m-by-p matrix, then x is an n-by-p matrix, including the case when p==1."
So if your A was something by 2, then you would get a 2 x 1 result instead of a scalar

Connectez-vous pour commenter.


Kelly Kearney
Kelly Kearney le 4 Fév 2016
What are the dimensions of your variables? If any are arrays rather than vectors, they will create multiple lines. In that case, you'll need to save the line handles and pass only the first of each color to legend:
t = 1:10;
y1 = rand(10,1); % 1 line
y2 = rand(10,2); % 2 lines
y3 = rand(10,1); % 1 line
figure(1)
h = plot(t,y3,'r',t,y2,'g',t,y1,'b');
leg = legend(h([1 2 4]), 'A','B','C');
  1 commentaire
Ljix
Ljix le 4 Fév 2016
This is how t and y3 (y2 and y1 same with different matrix) are defined
N = 100;
t = linspace(0, 10, N);
for k1 = 1:length(t);
y3(:,k1) = CN*((t(k1)*eye(2*n)-A)\B);
end

Connectez-vous pour commenter.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by