Skip to content

function curve() swap axes

4 messages · Boudewijn Verkooijen, Duncan Murdoch, David Winsemius

#
On 05/07/2012 8:34 AM, Boudewijn Verkooijen wrote:
curve() is designed for plotting y vs x where y is a function of x, so I 
think you need to do it yourself.  Simply compute a vector of "a" values 
using seq(), compute the corresponding Q values using your formula, and 
then use

plot(Q, a, type="l")

You can add the lwd and other arguments too if you like.

Duncan Murdoch
#
On Jul 5, 2012, at 8:34 AM, Boudewijn Verkooijen wrote:

            
R does not perform computer algebra. If you wanted a numerical  
approach, you can construct a close fit to that function with  
approxfun() and then reverse the x and y roles to create an inverse.  
Actually, since curve returns a list with x and y components you could  
also do this:

xycurv <- curve((sqrt(S0)/n)*(0.035+(0.7+(x-0.1)/ 
tanalpha)*(x-0.1))*((0.035+(0.7+(x-0.1)/tanalpha)*(x-0.1))/ 
(2*sqrt((0.7/2)^2+0.1^2)+2*sqrt((x-0.1)^2+((x-0.1)/ 
tanalpha)^2)))^(2/3),0.1,1.55,
+ lwd = 3, col = "royalblue4", ann = F, axes = T)

plot(xycurv$y, xycurv$x)