R 函数在ggplot中绘制多条线
我正在尝试创建一个函数,该函数将x值和向量的序列用于一个方程中。对于向量R 函数在ggplot中绘制多条线,r,function,ggplot2,R,Function,Ggplot2,我正在尝试创建一个函数,该函数将x值和向量的序列用于一个方程中。对于向量dM中的每个值,我想计算每个x值发生的概率(循环函数中的等式)。将所有概率与相关的dM值(两列)放在一个data.frame中,然后使用ggplot映射线以显示每个关系 例如:pred_prob(0870,50,c(-100,0))这意味着从0到870乘以50,计算向量中每个值的概率。这是我的工作代码。我怀疑嵌套for循环没有按预期工作,或者存储数据的方式不正确 pred_probs <- function(from,
dM
中的每个值,我想计算每个x值发生的概率(循环函数中的等式)。将所有概率与相关的dM
值(两列)放在一个data.frame中,然后使用ggplot映射线以显示每个关系
例如:pred_prob(0870,50,c(-100,0))
这意味着从0到870乘以50,计算向量中每个值的概率。这是我的工作代码。我怀疑嵌套for循环没有按预期工作,或者存储数据的方式不正确
pred_probs <- function(from,to,by,dM){
pred_females = numeric(0)
dM <- as.vector(dM)
x_values <- seq(from = from, to = to, by = by)
for( j in dM){
for(i in x_values){
prob=exp(-2.048e-02*i + 2.087e-02*j + -2.216e-05*i*j)/(1 + exp(-2.048e-02*i + 2.087e-02*j + -2.216e-05*i*j))
pred_females = c(pred_females,prob,j)
}
pred_females <- as.data.frame(pred_females)
ggplot(pred_females) +
geom_line(mapping = aes(x = x_values, y = pred_females,
group = j,
color = j))
}
}
pred_prob(0,870,50,c(-100,0))
pred_probs我不完全清楚您想做什么,因为您的代码存在一些问题,但我非常有信心,您可以随心所欲,而不需要任何循环或函数
这接近你想要的吗
library(tidyverse)
tibble() %>%
expand(i=c(-200, -100, 0, 100), j=seq(0, 2000, 50)) %>%
mutate(prob=exp(-2.048e-02*i + 2.087e-02*j + -2.216e-05*i*j)/(1 + exp(-2.048e-02*i + 2.087e-02*j + -2.216e-05*i*j))) %>%
ggplot() +
geom_line(aes(x = i, y = prob, color = as.factor(j)))
是的,这正是我所需要的,除了切换expand.grid中的字母I和j,以绘制向量中不同值的线,而不是序列。我在做一个函数,因为它需要改变序列的值和向量的值。我把你的代码编辑成一个函数。我在问题中发布了最后一个有效的函数。谢谢你的帮助!
library(tidyverse)
tibble() %>%
expand(i=c(-200, -100, 0, 100), j=seq(0, 2000, 50)) %>%
mutate(prob=exp(-2.048e-02*i + 2.087e-02*j + -2.216e-05*i*j)/(1 + exp(-2.048e-02*i + 2.087e-02*j + -2.216e-05*i*j))) %>%
ggplot() +
geom_line(aes(x = i, y = prob, color = as.factor(j)))