如何在ggplot中绘制包络曲线?

时间:2014-07-22 21:53:30

标签: r ggplot2 statistics regression

我正在尝试绘制包络曲线。我用这个等式绘制了回归线

corr.plot.contour<-function(data,x,y,xl,yl,save){
  ggplot(data, aes_string(x=x, y=y)) +
    geom_density2d(colour="black")+
    scale_color_manual(name = "CC",values=cols)+
    geom_smooth(method=lm, se=FALSE,color="black")  +  # Don't add shaded confidence region    
    theme_bw()+
    theme(panel.grid.major = element_line(colour = "#808080"))+
    xlab(xl)+
    ylab(yl)+
    ggsave(save,width=6, height=4,dpi=300)
  }

corr.plot.contour(data=foo1,x='log(area)',y='log(fd)',xl= expression("BA (log)" ~ (km^{2})),
                      yl=expression("FD (log)" ~ (hour)),save='fd_area_log.png')

我得到这个数字 enter image description here

所以,基本上我想将回归向上移动以通过最高值来获得包络曲线。我将给出必须发生转变的价值C.最终结果应该是这样的一行。

enter image description here

我怎样才能升级?

dput(droplevels(头(foo1)))

structure(list(id = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "Csb", class = "factor"), 
    fips = c(4011L, 4011L, 4011L, 4011L, 4011L, 4011L), gauge = c(9444500L, 
    9444500L, 9444500L, 9444500L, 9442000L, 9442000L), lat = c(33.049444, 
    33.049444, 33.049444, 33.049444, 32.965833, 32.965833), lon = c(-109.295278, 
    -109.295278, -109.295278, -109.295278, -109.309722, -109.309722
    ), start = structure(c(5L, 2L, 4L, 1L, 3L, 6L), .Label = c("1/12/1993 7:00", 
    "1/19/1993 2:15", "1/30/2008 9:15", "11/12/1994 13:30", "3/2/1991 7:30", 
    "9/22/1997 20:45"), class = "factor"), end = structure(c(5L, 
    2L, 4L, 1L, 3L, 6L), .Label = c("1/12/1993 13:30", "1/19/1993 6:30", 
    "1/30/2008 9:30", "11/13/1994 11:00", "3/2/1991 20:30", "9/23/1997 17:00"
    ), class = "factor"), peakq = c(438.9111, 1248.7729, 600.3171, 
    404.9309, 267.0279, 478.5547), peakt = structure(c(5L, 2L, 
    4L, 1L, 3L, 6L), .Label = c("1/12/1993 8:45", "1/19/1993 6:30", 
    "1/30/2008 9:23", "11/12/1994 21:15", "3/2/1991 13:15", "9/23/1997 8:15"
    ), class = "factor"), dt = c(5.75, 4.25, 7.75, 1.75, 0.1333, 
    11.5), HUC = c(15040004L, 15040004L, 15040004L, 15040004L, 
    15040002L, 15040002L), agency = structure(c(1L, 1L, 1L, 1L, 
    1L, 1L), .Label = "USGS", class = "factor"), regulation = structure(c(1L, 
    1L, 1L, 1L, 1L, 1L), .Label = "Undefined", class = "factor"), 
    gname = structure(c(2L, 2L, 2L, 2L, 1L, 1L), .Label = c("GILA RIVER NEAR CLIFTON, AZ.", 
    "SAN FRANCISCO RIVER AT CLIFTON, AZ."), class = "factor"), 
    area = c(7163.9071, 7163.9071, 7163.9071, 7163.9071, 10385.8523, 
    10385.8523), carea = c(7156.1371, 7156.1371, 7156.1371, 7156.1371, 
    0, 0), q2 = c(196.2357, 196.2357, 196.2357, 196.2357, 168.2021, 
    168.2021), q5 = c(512.5349, 512.5349, 512.5349, 512.5349, 
    325.6437, 325.6437), q10 = c(855.1688, 855.1688, 855.1688, 
    855.1688, 475.723, 475.723), q25 = c(1500.7929, 1500.7929, 
    1500.7929, 1500.7929, 739.0697, 739.0697), q50 = c(2171.9021, 
    2171.9021, 2171.9021, 2171.9021, 1002.4164, 1002.4164), q100 = c(3029.9026, 
    3029.9026, 3029.9026, 3029.9026, 1330.8918, 1330.8918), q200 = c(4134.2596, 
    4134.2596, 4134.2596, 4134.2596, 1741.4861, 1741.4861), q500 = c(6059.8052, 
    6059.8052, 6059.8052, 6059.8052, 2449.4072, 2449.4072), action = c(297.3269, 
    297.3269, 297.3269, 297.3269, 263.6298, 263.6298), minor = c(509.7032, 
    509.7032, 509.7032, 509.7032, -0.0283, -0.0283), moderate = c(736.238, 
    736.238, 736.238, 736.238, -0.0283, -0.0283), major = c(2035.9813, 
    2035.9813, 2035.9813, 2035.9813, -0.0283, -0.0283), usgs_area = c(7163.91, 
    7163.91, 7163.91, 7163.91, 10385.9, 10385.9), est_area = c(7255, 
    7255, 7255, 7255, 10272, 10272), error = c(1.27155, 1.27155, 
    1.27155, 1.27155, 1.09622, 1.09622), el = c(0.521385, 0.521385, 
    0.521385, 0.521385, 0.434142, 0.434142), k = c(0.213505, 
    0.213505, 0.213505, 0.213505, 0.148031, 0.148031), bl = c(184338, 
    184338, 184338, 184338, 263421, 263421), r = c(2054.38, 2054.38, 
    2054.38, 2054.38, 2066.19, 2066.19), rr = c(0.0111447, 0.0111447, 
    0.0111447, 0.0111447, 0.00784367, 0.00784367), si = c(0.00757568, 
    0.00757568, 0.00757568, 0.00757568, 0.00513591, 0.00513591
    ), rdd = c(0.816995, 0.816995, 0.816995, 0.816995, 0.928348, 
    0.928348), rbm = c(5460, 5460, 5460, 5460, 8809, 8809), rfocf = c(0.762154, 
    0.762154, 0.762154, 0.762154, 0.848173, 0.848173), rrg = c(1.67842, 
    1.67842, 1.67842, 1.67842, 1.91814, 1.91814), precip = c(529.942, 
    529.942, 529.942, 529.942, 465.025, 465.025), temp = c(10.4292, 
    10.4292, 10.4292, 10.4292, 12.1328, 12.1328), fd = c(13, 
    4.25, 21.5, 6.5, 0.25, 20.25), tp = c(5.75, 4.25, 7.75, 1.75, 
    0.133333333333333, 11.5), rt = c(7.25, 0, 13.75, 4.75, 0.116666666666667, 
    8.75), nfd = c(0.00181465223076385, 0.000593251690826644, 
    0.00300115561241714, 0.000907326115381926, 2.40712069436997e-05, 
    0.00194976776243968), ntp = c(0.000802634640530165, 0.000593251690826644, 
    0.00108181190680153, 0.000244280107987442, 1.28379770366399e-05, 
    0.00110727551941019), nrt = c(0.00101201759023369, 0, 0.00191934370561561, 
    0.000663046007394484, 1.12332299070599e-05, 0.000842492243029491
    ), nq = c(0.0612670005170782, 0.17431450220788, 0.0837974434369759, 
    0.0565237508454011, 0.0257107353625662, 0.0460775568703206
    ), Group.1 = c(4011L, 4011L, 4011L, 4011L, 4011L, 4011L), 
    county = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "Greenlee", class = "factor"), 
    class = c("Csb", "Csb", "Csb", "Csb", "Csb", "Csb"), prop = c(0.742, 
    0.742, 0.742, 0.742, 0.742, 0.742), state = c("arizona", 
    "arizona", "arizona", "arizona", "arizona", "arizona")), .Names = c("id", 
"fips", "gauge", "lat", "lon", "start", "end", "peakq", "peakt", 
"dt", "HUC", "agency", "regulation", "gname", "area", "carea", 
"q2", "q5", "q10", "q25", "q50", "q100", "q200", "q500", "action", 
"minor", "moderate", "major", "usgs_area", "est_area", "error", 
"el", "k", "bl", "r", "rr", "si", "rdd", "rbm", "rfocf", "rrg", 
"precip", "temp", "fd", "tp", "rt", "nfd", "ntp", "nrt", "nq", 
"Group.1", "county", "class", "prop", "state"), row.names = 99096:99101, class = "data.frame")

0 个答案:

没有答案