2015-06-29 23 views
7

Mi sembra una domanda facile ...Punti di identificazione in una curva

Come si identificano le coordinate in una figura? Ho tracciato alcuni dati, usato unireg (il pacchetto uniReg) per creare una curva spline e voglio estrarre i dati da un punto.

library(uniReg) 
P0mM <- read.table(text=" 
Time   FeuM 
0.04 138.8181818 
    7 1258.636364 
    14 1320.545455 
    21  2110.37037 
    28 13730.37037 
    35 1550.909091",header=TRUE) 

z=seq(min(P0mM$Time),max(P0mM$Time),length=201) 
uf=with(P0mM,unireg(Time,FeuM,g=5,sigma=1)) 
plot(FeuM~Time,P0mM,ylim=c(0,16000),ylab="Fe2+ uM", xlab="Time", main="0mM P") 
lines(z,uf$unimod.func(z)) 

enter image description here

ho potuto trovare il valore y max della curva (che è 14444)

max((uf$unimod.func(z))) 

voglio identificare dove sull'asse x questo avviene. (Dovrebbe essere intorno al 30, ma voglio essere esatto).

Come si fa?

Grazie!

+0

Se si desidera una "esatta" risposta allora abbiamo bisogno di alcuni "esatte" di dati. –

+0

Potresti fornire i tuoi dati ('P0mM') usando' dput'? Inoltre, da dove viene unireg() '? È in qualche pacakge? – thelatemail

+0

Anche se vuoi che la tua trama sembri più scientifica, usando arguemtns come questi: 'trama (1,1, ylim = c (0,16000), ylab = espressione (Fe [2] ^" + "~ mu * M) , xlab = "Time", main = "0 mMol P") ' –

risposta

6

Sembra come un caso per optimise o optimize (a seconda del vostro affinità con l'inglese britannico o americano):

optimise(uf$unimod.func, maximum=TRUE, interval=range(P0mM$Time)) 
#$maximum 
#[1] 29.27168 
# 
#$objective 
#   [,1] 
#[1,] 14444.85 
+0

Grazie! Ho un sacco di figure come questa, e ho appena provato tutte. Funziona per tutti loro. Sapevo che c'era qualcosa di semplice! –