Clear Filters
Clear Filters

plot legend shows wrong linespec

10 views (last 30 days)
William Rose
William Rose on 15 Apr 2024
Commented: William Rose on 16 Apr 2024
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
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
molTot is scalar quantity while others are not

Sign in to comment.

More Answers (1)

the cyclist
the cyclist on 16 Apr 2024
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!