Plot line in subplot removes axes title

2 vues (au cours des 30 derniers jours)
Lask
Lask le 5 Juil 2017
Commenté : Adam le 5 Juil 2017
Hi everyone,
I'm having an issue regarding plot and subplot commands. I created a figure ( figure graphic object) as follows:
f = figure;
Then I created a subplot ( axes graphic object), assigned a title to it and placed it in the figure like this:
a = subplot(2,1,1, 'Parent',f)
a.Title.String = 'This is a subplot'
Finally I created a dummy plot and tried to display it in subplot "a" as follows
p = plot(a,1:10,1:10:100)
However, the behavior was not as I expected. The plot is correctly displayed in the "a" subplot axes but the title I assigned to "a" was removed.
I'd like to know why is this happening. Thanks in advance.

Réponse acceptée

Adam
Adam le 5 Juil 2017
Modifié(e) : Adam le 5 Juil 2017
Functions like plot have side effects, one of which is to clear the title. Just change the order:
p = plot(a,1:10,1:10:100);
a.Title.String = 'This is a subplot';
Well, technically, it is not the plot function that has this effect, it is the axes property
'NextPlot'
which defaults to
'Replace'
and when it is set to 'replace' the next instruction to plot (or imagesc or anything that plots onto the axes) will not only remove existing plots but will also reset all axes properties except position and units (this is in the help for Axes Properties under 'Next Plot', but is not obvious from the help of 'plot' itself).
  2 commentaires
Lask
Lask le 5 Juil 2017
Modifié(e) : Lask le 5 Juil 2017
Really helpful, Adam. Just changed 'NexPlot' property of my axes to 'add' and everything worked as I wanted.
Thanks so much.
Eduardo
Adam
Adam le 5 Juil 2017
Beware though that this setting will also cause any new plots to be plotted on top of existing ones rather than replacing them, as is the default behaviour.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by