R ggplot2:绘制自变量积分的简单方法?
我正在积分一个函数R ggplot2:绘制自变量积分的简单方法?,r,ggplot2,R,Ggplot2,我正在积分一个函数f(t)=2t(只是一个例子),并希望使用 awesome_thing <- function(t) {2*t} integrate(awesome_thing, lower=0, upper=10) awesome\u thing不是ggplot2,但通过创建数据帧传递给该模式,应该不难适应: plot(x=seq(0.1,10, by=0.1), y= sapply(seq(0.1,10, by=0.1) , functi
f(t)=2t
(只是一个例子),并希望使用
awesome_thing <- function(t) {2*t}
integrate(awesome_thing, lower=0, upper=10)
awesome\u thing不是ggplot2,但通过创建数据帧传递给该模式,应该不难适应:
plot(x=seq(0.1,10, by=0.1),
y= sapply(seq(0.1,10, by=0.1) ,
function(x) integrate(awesome_thing, lower=0, upper=x)$value ) ,
type="l")
integrate函数的诀窍在于它重新运行一个列表,您需要为上限的各种变化提取“value”元素。这里是一个ggplot
解决方案和stat\u函数
# create a function that is vectorized over the "upper" limit of your
# integral
int_f <- Vectorize(function(f = awesome_thing, lower=0,upper,...){
integrate(f,lower,upper,...)[['value']] },'upper')
ggplot(data.frame(x = c(0,10)),aes(x=x)) +
stat_function(fun = int_f, args = list(f = awesome_thing, lower=0))
#创建一个向量化的函数,该函数超出了函数的“上限”
#整体的
这就是你要找的吗?亲爱的马拉,非常感谢你的帮助!不幸的是,这不是我想要的。本质上,我试图画出函数的积分,在t的每个值处,从0到10。在上面的例子中,绘制的点是(1,1),(2,4),(3,9),…,(10100)。这有意义吗?我想你最好先在ggplot2
之外进行评估,然后再进行绘图。谢谢Ben,本希望能有一些快速而肮脏的方法,但谢谢你的帮助!谢谢你!但是,这会在“}”中给出一个错误“error:unexpected'}”。我错过了什么?谢谢mnel,我需要在一段(非常)长的时间内进行积分,并且得到一个错误“积分中的错误(f,下限,上限…):达到的最大细分数”。您能告诉我如何在这里添加细分参数吗?我已经尝试将它添加到函数()、integrate()和list()中,就像f和更低版本一样,但是它会抛出另一个错误“f(x)中的错误…”:未使用的参数(0)存在错误(name,envir=env,mode=mode):缺少参数“env”,没有默认值“@Thomas,在列表中命名参数对我有效<代码>ggplot(data.frame(x=c(0,10)),aes(x=x))+stat_函数(fun=int_f,args=list(f=awesome_thing,lower=0,subdivisions=1e5))
再次感谢mnel,你说得对,它工作正常!我的错误是我也在int\u f中添加了参数。:)