Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2:绘制自变量积分的简单方法?_R_Ggplot2 - Fatal编程技术网

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中添加了参数。:)