Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Matlab Plotting problem

  1. May 22, 2008 #1
    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 im 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, heres a picture


    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?
  2. jcsd
  3. May 28, 2008 #2
  4. Jun 2, 2008 #3
    Gonna give it one last shot
  5. Jun 2, 2008 #4
    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:

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

    basically you do something like:
    Code (Text):
    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);


    moveY = [2 2 2 2 2];

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

    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.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook