plot legend shows wrong linespec

30 views (last 30 days)
William Rose
William Rose on 15 Apr 2024 at 23:51
Commented: William Rose on 16 Apr 2024 at 1:06
Starting with no open figures, and some data already computed, I made a plot as follows:
load('data') % I did not use this commands initially. It is here for demonstration.
figure
plot(t,molTot,'-rx',t,molGas,'-bo');
legend('a','b')
and I got a plot like the plot above, including the incorrect lines in the legend.
I had previously seen this problem in multi-panel plots made by a complicated script. I looked in the figure properties and saw nothing obvious, but I'm not a figure property expert, so I don't know exactly what to look for. Therefore I closed all open figures, before issuing the three commands above (without the 'load(...)') - to see if the bad legend occurred with a new and simpler figure. And it did. I closed the figure shown above, then repeated the three commands above, with the same result. Therefore I saved variables t, molTot, molGas in file data.mat. Then I closed and restarted Matlab. I did
load('data')
figure
plot(t,molTot,'-rx',t,molGas,'-bo');
legend('a','b')
and I got asnother figure with an incorrect linespec in the legend, as seen above.
Why is this happening? [Matlab 2023b on Windows 11 Pro.]
Thanks.

Accepted Answer

VBBV
VBBV on 16 Apr 2024 at 0:27
d = load('data.mat')
d = struct with fields:
molGas: [401x1 double] molTot: 3.6118 t: [401x1 double]
%figure
plot(d.t,repmat(d.molTot,length(d.t),1),'-rx',d.t,d.molGas,'-bo');
legend('a','b')
  2 Comments
VBBV
VBBV on 16 Apr 2024 at 0:28
molTot is scalar quantity while others are not

Sign in to comment.

More Answers (1)

the cyclist
the cyclist on 16 Apr 2024 at 0:32
The syntax you are using created a plot with 402 "lines". The first 401 are red, and the last one is blue.
load('data') % I did not use this commands initially. It is here for demonstration.
figure
h = plot(t,molTot,'-rx',t,molGas,'-bo');
legend('a','b')
size(h)
ans = 1x2
402 1
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
You presumably intended something more like
figure
h = plot(t,molTot*ones(size(t)),'-rx',t,molGas,'-bo');
legend('a','b')

Products


Release

R2023b

Community Treasure Hunt

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

Start Hunting!