Matlab Plotting: Move Horizontal Line Over Graph Without Re-Plotting

  • Context: MATLAB 
  • Thread starter Thread starter JohnSimpson
  • Start date Start date
  • Tags Tags
    Matlab Plotting
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
3 replies · 6K views
JohnSimpson
Messages
89
Reaction score
0
In my GUI I'm plotting a fairly large amount of data in an axes, and then plotting a horizontal line overtop that the user can control the vertical position of. Is there a way I can have the first plotted graph (the large amount of data) always be behind the line I am plotting overtop, and have the user be able to dynamically move the line up and down the axes without having to re-plot both graphs every time the user wants to move the horizontal line?

For clarity, here's a picture

http://img229.imageshack.us/my.php?image=exampleya8.jpg

Again, I want the user to be able to dynamically move the line up and down without altering the blue signal (because it takes a while to re-plot the blue signal). Suggestions?
 
Physics news on Phys.org
Gonna give it one last shot
 
Ok, I don't remember exactly how to do this, but I believe it has something to do with the 'erase' property when drawing.

Check out this link:
http://www.mathworks.com/access/hel...-us&q=matlab+plotting+erase&ie=UTF-8&oe=UTF-8

Look at the part:
Erase Modes
...
none — The object is not erased when it is moved.
...


basically you do something like:
Code:
keep_me  = line('color','b','erase','none');
move_me = line('color','r','erase','normal'); 

keepX = [0 1 2 3 4];
keepY = [0 1 2 3 4];
set(keep_me, 'xdata', keepX, 'ydata', keepY);

moveX = [0 1 2 3 4];
moveY = [1 1 1 1 1];

set(move_me, 'xdata', moveX, 'ydata', moveY);
drawnow;

pause;

moveY = [2 2 2 2 2];

set(move_me, 'xdata', moveX, 'ydata', moveY);
drawnow;


Something like that... treat that as pseudo code cause I'm trying to remember off the top of my head. I don't remember exactly if you need that drawnow in there, or (to be honest) when to use the drawnow.