我在绘制min,max函数时遇到困难
1/(min(max(c * x+d, 1/a),1/b)))
。
library(ggplot2)
target <- data.frame(year = c(2011), a = c(29.82), b = c(22.27),c = c(0.0004546), d=c(0.014900))
eqs = function(x){1/(min(max(target[1,4] * x + target[1,5], 1/target[1,2]),1/target[1,3]))}
ggplot(data.frame(x=c(0,10,20,30,40,50,55,60,70, 100)), aes(x)) + stat_function(fun=eqs) + xlab("x") + ylab("y")
到目前为止,我只得到22.27的水平线。
函数本身经过测试并在插入时返回正确的值,例如,eqs(50)= 26.57454
有人知道怎么做吗?
答案 0 :(得分:1)
我猜问题是该函数使用的是max和min,而不是pmax和pmin。
# Loading the package
library(ggplot2)
# Defining the parameters
target <- data.frame(year = c(2011), a = c(29.82), b = c(22.27),c = c(0.0004546), d=c(0.014900))
# Defining the function
eqs = function(x){1/(pmin(pmax(target[1,4]*x+target[1,5],1/target[1,2]),1/target[1,3]))}
# COnstructing the data frame
df <- data.frame(x=c(0,10,20,30,40,50,55,60,70, 100))
# Ploting the curve
ggplot(df, aes(df$x)) + stat_function(fun = eqs) + xlab("x") + ylab("y")