gpt4 book ai didi

r - 覆盖ggplot2中的多个stat_function调用

转载 作者:行者123 更新时间:2023-12-04 04:27:37 30 4
gpt4 key购买 nike

我有两个数据帧rawcoef:

  • 包含原始数据
  • 其他包含我从原始数据得出的建模系数。

  • 第一个数据帧 raw包含:
  • Time(0到900秒)
  • OD用于许多变体和四次运行。

  • 第二个数据帧 coef包含:
  • 每个Variant/run组合一行,在该行中具有各个系数(MD.1t0.1)。

  • 我已经绘制了每个Variant拆分的原始数据,并用 runID进行了着色,这没有问题。但是,现在我想根据 runID覆盖模型曲线。

    由于建模系数位于不同的数据帧中,具有不同的维度,因此我不能仅对其进行 cbind编码。 stat_function对我不起作用。一次只能显示一条曲线。

    我已经尝试过 for loop,每次都添加 stat_function层:
    p <- ggplot(temp, aes(Time, OD)) + geom_point(aes(colour = runID), size = 2) #works fine!
    calc <- function(x){temp.n$M[ID] * (1 - exp(temp.n$D.1[ID] * temp.n$t0.1[ID] - x)))}
    for(ID in 1:length(unique(temp.n$runID))) {
    p <- p + stat_function(fun = calc)
    }
    print(p)

    最后,所有 p返回的都是原始数据的图,以及循环位的最终曲线。每次我尝试添加新的 p层时, stat_function似乎都恢复为原始状态。

    有任何想法吗 ?

    最佳答案

    在解决方案given here之后,您可能必须自己模仿stat_function的效果。由于您没有提供可复制的示例,因此我创建了一个简单的示例,希望可以模拟您的问题:

    library(ggplot2)
    reg.fun <- function(x, par1, par2){exp(-x*par1) + par2} #functional form
    reg <- data.frame(g=factor(1:3), par1=(1:3)/10, par2=1:3) #parameters for 3 groups

    #generate data from reg.fun
    dd <- expand.grid(x=0:9, g=reg$g) #set x values, and 3 groups from reg
    dd <- merge(dd, reg) #"import" parameters
    dd$mn <- with(dd, reg.fun(x, par1, par2)) #value of function for given x's
    dd$y <- rnorm(30, mean=dd$mn, sd=0.5) #add variability
    dd <- subset(dd, select=c(g,x,y)) #remove auxiliary variables

    #similarly to above generate values for the function on a fine grid of x values
    pred.dd <- expand.grid(x=seq(0,9, length=101), g=levels(dd$g))
    pred.dd <- merge(pred.dd, reg)
    pred.dd$y <- with(pred.dd, reg.fun(x, par1, par2))

    #draw the plot
    p <- qplot(x,y, colour=g, data=dd) #scatterplot of data
    p + geom_line(data=pred.dd) #add the curves of the functions

    关于r - 覆盖ggplot2中的多个stat_function调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3371892/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com