Is there a way to remove a single plot from existing axes?
Asked Answered
N

1

11

Is there an easy way to remove a plotted line from a set of axes without clearing everything else on the axes? I'm trying to implement a GUI with a listbox containing several data sets. I can make the callback function plot the selected data, but I'm not sure how to 'unplot' it when I deselect a data set. Any ideas?

Noddy answered 2/8, 2010 at 14:20 Comment(2)
you might be interested in clickableLegend on FEX: mathworks.com/matlabcentral/fileexchange/21799-clickablelegendLoathsome
@Amro: Excellent suggestion! Thanks for bringing this to my attention.Noddy
C
17

If you save a handle to the created graphics object, you can call DELETE on it to remove it from the plot:

hLine = plot(...);  %# Create a line with PLOT
delete(hLine);      %# ...and delete it

Alternatively, if you didn't save the handle in a variable, you can search for it using FINDOBJ, then delete it when you find it.

If you don't actually want to delete it, but simply turn the visibility of the line on and off, you can set the 'Visible' property of the graphics object accordingly:

set(hLine,'Visible','off');  %# Make it invisible
set(hLine,'Visible','on');   %# Make it visible
Campobello answered 2/8, 2010 at 14:23 Comment(8)
I swear I tried this, but it didn't work then, and now it does.Noddy
Ah, I was using delete plothandle not delete(plothandle)Noddy
@Doresoom: That explains it. The command syntax delete plothandle would be looking for a file named plothandle to delete.Campobello
@Doresoom, delete plothandle is equivalent to delete('plothandle')Hit
But this does not remove the legend if there is one, does it?Flown
@RupertJones, true, but this will fix the legend: legend('off'),legend('show')Pangolin
@Juhl: Thanks, but I meant the individual legend for the plot. I only figured out the way by hiding each individual component (text, line, ...) of the respective legend item.Flown
@RupertJones I've switched from legend(...) towards plot(..., ,'DisplayName',{'V_x','V_y','V_z'}) which will keep annotations for each line.Pangolin

© 2022 - 2024 — McMap. All rights reserved.