Why do I always need to run plot twice?
21 views (last 30 days)
Show older comments
Every time I run a script that has a series of plot calls, it will always come out wrong the first time (only one line where there should be more, etc.) and I need to run the whole script again and then it works as expected. except because of this it is impossible to make a correct legend because despite the line not being visable it's still stored as a line in the plot and thus the legend lists it first.
The way I see it, I either need to fix how plots launch on my machine or have a way to always apply the right legend to the right plot.
7 Comments
Steven Lord
on 8 Sep 2022
My suspicion is that you're calling plot twice then turning hold on. In that case the first time this runs the second plot call would erase the first plot, but the second time you run it hold is already enabled so both the plots created before the hold would remain.
Accepted Answer
Torfi
on 9 Sep 2022
1 Comment
Walter Roberson
on 9 Sep 2022
hold only affects the current axis. figure() with no argument creates a new figure and so a new axis. subplot() with a combination of arguments that has not been used before creates a new axis.
However if you figure() passing in an existing figure number then no new axis will be created, and subplot with a combination of parameters that has been used before will not create a new axis. If you left hold on in an axis and then reuse the axis then you can run into issues... and if you had an existing axis and turn hold on first then you can run into issues
More Answers (1)
Walter Roberson
on 8 Sep 2022
When you call hold on before you do any plotting, then the xlim and ylim will default to 0 1 and will not change unless you call xlim or ylim. The limits are one of the things held.
0 Comments
See Also
Categories
Find more on Legend in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!