我的代码如下:
fun1 <- function(x){
314.32*x^2.413
}
fun2 <- function(x){
350-0.7136*50/x^(2.413*6)
}
fun3 <- function(x){
2500-4.37136*500/x^(2.413*4)
}
gg1 <- ggplot(data.frame(x = c(0, 3)),
aes(x = x))+
stat_function(fun = fun1)+
stat_function(fun = fun2)+
stat_function(fun = fun3)`
gg2 <- gg1 + ylim(0, 2500)
print(gg2)
代码可以工作,但我只希望第一个功能仅用于x <= 1
的值,而其他两个功能仅用于x > 1
的值。我尝试与xlim一起玩,但到目前为止没有任何效果。另外,我不想在x = 1
处扭结,但是我对如何添加平滑粘贴条件感到非常困惑。
这里是初学者,因此非常感谢您提供一个简单的解决方案!
答案 0 :(得分:1)
查看此解决方案:
fun1 <- function(x){
ifelse(x<=1, 314.32*x^2.413, NA)
}
fun2 <- function(x){
ifelse(x>1, 350-0.7136*50/x^(2.413*6), NA)
}
fun3 <- function(x){
ifelse(x>1, 2500-4.37136*500/x^(2.413*4), NA)
}
library(ggplot2)
gg1 <- ggplot(data.frame(x = c(0, 3)),
aes(x = x))+
stat_function(fun = fun1, n=1001)+
stat_function(fun = fun2, n=1001)+
stat_function(fun = fun3, n=5001)
gg2 <- gg1 + ylim(0, 2500)
print(gg2)