2015-06-29 16 views
7

Tôi cảm thấy đây là một câu hỏi dễ dàng ...Xác định các điểm trong một đường cong

Làm thế nào để bạn xác định tọa độ trong một hình? Tôi vẽ một số dữ liệu, sử dụng unireg (gói uniReg) để tạo ra một đường cong spline, và muốn lấy ra dữ liệu từ một điểm.

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

tôi đã có thể tìm ra max y giá trị của đường cong (đó là 14444)

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

Tôi muốn xác định nơi trên trục x điều này xảy ra. (Nên khoảng 30, nhưng tôi muốn chính xác).

Bạn làm như thế nào?

Cảm ơn!

+0

Nếu bạn muốn một "chính xác" trả lời thì chúng ta cần một số "chính xác" dữ liệu. –

+0

Bạn có thể cung cấp dữ liệu của mình ('P0mM') bằng' dput' không? Ngoài ra, 'unireg()' xuất phát từ đâu? Có trong pacakge không? – thelatemail

+0

Ngoài ra nếu bạn muốn cốt truyện của mình xem xét khoa học hơn bằng cách sử dụng arguemtns như sau: 'plot (1,1, ylim = c (0,16000), ylab = expression (Fe [2] ^" + "~ mu * M) , xlab = "Thời gian", chính = "0 mMol P") ' –

Trả lời

6

Có vẻ như một trường hợp cho optimise hoặc optimize (tùy thuộc vào mối quan hệ của bạn với tiếng Anh của Anh hoặc Mỹ):

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

Cảm ơn bạn! Tôi có một loạt các con số như thế này, và chỉ thử tất cả chúng. Nó hoạt động cho tất cả chúng. Tôi biết có gì đó đơn giản! –

Các vấn đề liên quan