needs to get projection of one point from one x-axis to another
Mostrar comentarios más antiguos
Hello. I have a problem with gui. I got a plot with 2 different scaling x-axes and one y-axis. I need to get position of point (created on red axis) in values of magenta axes. And then to create a plot using this point as a start on magenta axes. How can I do it?
1 comentario
Aleksandra
el 28 de Mayo de 2012
Respuestas (2)
Geoff
el 28 de Mayo de 2012
Have I understood correctly? You have xred and xmag which are two different ranges. You want to translate the x-coord from the red axis to the magenta axis without a visual change in position.
I assume that xred and xmag are both 1-by-2 vectors defining a min- and max-value. Assuming that your axis scale is linear, I'll first turn a point x into an axis-relative value with the red scaling (axis-relative being a number from 0 to 1 - ie normalised):
xrel = (x - xred(1)) / diff(xred);
Now, I'll reverse the calculation and translate the relative position into the magenta axis:
x1 = xmag(1) + xrel * diff(xmag);
Putting that together, to translate from one axis limit to another you could do this:
xlate = @(x,lim1,lim2) lim2(1) + (x-lim1(1)) * diff(lim2) / diff(lim1);
x1 = xlate(x, xred, xmag);
This will work if x is a vector, too.
4 comentarios
Aleksandra
el 28 de Mayo de 2012
Geoff
el 29 de Mayo de 2012
No problem: lim1 is the range of the 'from' axis, and lim2 is the range of the 'to' axis. The value lim2(1) is the first value (lower bound) of the 'to' range. You can get these range vectors directly off your axes by calling get(axishandle, 'XLim').
Aleksandra
el 25 de Jun. de 2012
Geoff
el 26 de Jun. de 2012
No problem. This question is still open. If I have answered your question, please accept the answer. If my answer was not satisfactory, and your own answer is better, please accept that instead.
Aleksandra
el 25 de Jun. de 2012
0 votos
Categorías
Más información sobre Graphics en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!