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

Double y-axis plot in Matlab

  1. Dec 23, 2012 #1
    Good Day Everybody,

    Please assist me on these problems

    1. I wish to put six plots on the same plot using matlab. The details of each plot are stated below

    PLOT 1
    x axis range 0:1
    y axis range 0:1

    PLOT 2
    x axis range 0:1
    y axis range 0:1

    PLOT 3
    x axis range 0:1
    y axis range 0:1

    PLOT 4
    x axis range 0:1
    y axis range 0:1

    PLOT 5
    x axis range 0:1
    y axis range 0:2

    PLOT 6
    x axis range 0:1
    y axis range 0:7


    Please how do I put all these plots on one single plot despite different y axis range?

    Thanks

    Best regards,
    adeeyo
     
  2. jcsd
  3. Dec 23, 2012 #2

    Pythagorean

    User Avatar
    Gold Member

    y-axis range is decided only by y-data, not by axes, so they are already independent in that regard.

    There are three ways you can put multiple axes on one figure.

    1. create each axes and manually place its position on the figure
    2. use 'subplot', a built-in matlab function
    3. use 'subaxis' a open source matlab function avaialable on the matlab file exchange.
     
  4. Dec 24, 2012 #3
    Thanks Pythagorean.

    Subplot will not work as I want all the plots to overlay on the same plot. Please advise on how to create each axes and manually place its position on the figure.

    Thanks

    adeeyo
     
  5. Dec 24, 2012 #4

    Pythagorean

    User Avatar
    Gold Member

    axes1 = axes;
    set(axes1,'Position',X)

    Where X is a four element vector giving (in order): horizontal position of lower left corner, vertical position of lower left corner, width, height.

    Units are normalized to the figure (0 to 1), so X=[0 0 1 1] would fill the whole figure.

    Now just copy this analogy to make more axes, hand select their positions such that they overlap.
     
  6. Dec 25, 2012 #5

    Dr Transport

    User Avatar
    Science Advisor
    Gold Member

    if you plot all of the data sets at once, you then can set the axis using the command:
    axis([0 1 0 7]); which should work nicely....

    Code (Text):

    plot (x1,y1);
    hold all;
    etc....

    plot(x6, y6)
    hold off;

    axis([01 0 7]);
     
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook