Filter löschen
Filter löschen

Superimposing two figures on the top of each other

39 Ansichten (letzte 30 Tage)
Tommy
Tommy am 14 Dez. 2014
Kommentiert: Tommy am 17 Dez. 2014
Hi everyone
I have a question regarding on superimposing two figures.
For example, I have two figures which both have different scaling of x-axis and y-axis. Is there a function that can superimpose these two figures.
For example, I have these two figures.
and
You can see that the x-axes and the y-axes of these two figures are differently scaled. Is it possible that place the first figure on the top the second figure, so that the curly can be seen on the top of the second image. By the way, the second image was created by using imagesc() function.
I tried to use the following code
  1. figure(1)
  2. imagesc()
  3. hold on
  4. plot(x,y)
But it did not work due to the difference in x and y axes.
Please, could someone advise me.
Thank you very much
Tommy

Akzeptierte Antwort

Rick Rosson
Rick Rosson am 14 Dez. 2014
m = 1800 / ( 3 - -3) ;
dx = 1800 / 2 ;
u = m*x + dx ;
n = 1000 / ( 1.6 - -1.6 ) ;
dy = 1000 / 2 ;
v = n*y + dy
plot(u,v);

Weitere Antworten (2)

matt dash
matt dash am 15 Dez. 2014
Don't use "hold on" to plot both the image and the plot in the same axes. Instead, create two separate axes on top of each other. Draw the image in the first axes (the one on the bottom) and the plot on top:
figure
axes('position',[something])
imagesc...
axes('position',[same thing],'color','none')
plot(...)
  3 Kommentare
matt dash
matt dash am 16 Dez. 2014
The position property sets the position of the axes within the figure. The figure is the window itself. You use the position property in conjunction with the "units" property, which say what units the position is in.
For example:
figure
axes('units','inches','position',[.5 .75 3 2])
makes an axes that is located .5 inches to the left and 0.75 inches up from the bottom-left corner, and is 3 inches wide and 2 inches tall.
If you don't specify the position, it will use a default value. So if you're just using the default anyway now, you don't need to worry about setting a different position. The important thing is just that both axes have the same position, so if you use the default for one, use it for the other too.
Example of using default position:
figure
%make first axes:
a=axes;
rgb=imread('peppers.png');
image(rgb) %display image
set(a,'xtick',[],'ytick',[]); %remove its ticks
%make 2nd axes:
a2=axes;
x=rand(1,10);
y=rand(1,10);
plot(x,y)
set(a2,'color','none')
Note that both image and plot reset their axes' properties, so i use "set" to change the properties AFTER calling those two functions. Alternatively, you can set the properties before and use "hold on" to prevent the axes from being reset. (Many people think of "hold on" as just being used when you want to plot two things in the same axes, but really what it's doing is stopping plot or image from resetting the axes themselves)
Tommy
Tommy am 17 Dez. 2014
Thank you very much for your advice.

Melden Sie sich an, um zu kommentieren.


Sean de Wolski
Sean de Wolski am 16 Dez. 2014
Bearbeitet: Sean de Wolski am 16 Dez. 2014
It's actually there when you plot. Just in the upper left hand corner because that's where the data are located. This will make it more obvious.
imagesc(magic(100))
hold on
plot(1:10,cumsum(rand(1,10)),'r-')
If you want the line in the middle, then adjust the data to be in the middle like Rick has done.
  1 Kommentar
Tommy
Tommy am 17 Dez. 2014
Thank you very much for you advice, I got it working with Rick's method.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Formatting and Annotation finden Sie in Help Center und File Exchange

Tags

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by