ggplot2 中没有扭结的 "piecewise" 函数图

Graph of "piecewise" function without kinks in ggplot2

我正在尝试复制下图:

我的代码如下:

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处出现扭结,但我真的很困惑如何添加平滑粘贴条件。

这里是初学者,非常感谢一个简单的解决方案!

查看此解决方案:

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)