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)
我正在尝试复制下图:
我的代码如下:
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)