stat_function with data frames in ggplot2

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

stat_function with data frames in ggplot2

Veerappa Chetty
I use solve(A,b) inside my function, myfun2; it works fine when I return
one value or a list.
I want use the return values in ggplot as below: ggplot(data.frame(
x=c(0.1,0.8)),aes(x=x))+stat_function(fun=myfun.2,geom="line")
I get a blank graph. Would greatly appreciate help! Thanks.

Here are my codes:
p.lm<-0.05 ##to initialze only
p.lh<-0.1
p.ll<-1-p.lm-p.lh
p.ml<-0.3
p.mh<-0.1
p.mm<-1-p.ml-p.mh
p.hl<-0.05
p.hm<-0.5
p.hh<-1-p.hl-p.hm
myfun.5<-function(xvar){
y<-numeric(2)
p.lm<-xvar
A<-matrix(c(p.lm+p.lh+p.hl,p.hl-p.ml,p.hm-p.lm,p.ml+p.mh+p.hm),nrow=2,byrow
= TRUE)
b<-c(p.hl,p.hm)
y<-solve(A,b)
z<-list(y[1],y[2],1-y[1]-y[2])
z[1]
}

g.2<-ggplot(data.frame(
x=c(0.1,0.8)),aes(x=x))+stat_function(fun=myfun.5,geom="line")
g.2

--
Professor of Family Medicine
Boston University
Tel: 617-414-6221, Fax:617-414-3345
emails: [hidden email],[hidden email]

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: stat_function with data frames in ggplot2

David Winsemius

> On Jun 7, 2018, at 7:18 AM, Veerappa Chetty <[hidden email]> wrote:
>
> I use solve(A,b) inside my function, myfun2; it works fine when I return
> one value or a list.
> I want use the return values in ggplot as below: ggplot(data.frame(
> x=c(0.1,0.8)),aes(x=x))+stat_function(fun=myfun.2,geom="line")
> I get a blank graph. Would greatly appreciate help! Thanks.
>
> Here are my codes:
> p.lm<-0.05 ##to initialze only
> p.lh<-0.1
> p.ll<-1-p.lm-p.lh
> p.ml<-0.3
> p.mh<-0.1
> p.mm<-1-p.ml-p.mh
> p.hl<-0.05
> p.hm<-0.5
> p.hh<-1-p.hl-p.hm
> myfun.5<-function(xvar){
> y<-numeric(2)
> p.lm<-xvar
> A<-matrix(c(p.lm+p.lh+p.hl,p.hl-p.ml,p.hm-p.lm,p.ml+p.mh+p.hm),nrow=2,byrow
> = TRUE)
> b<-c(p.hl,p.hm)
> y<-solve(A,b)
> z<-list(y[1],y[2],1-y[1]-y[2])
> z[1]
> }
>
> g.2<-ggplot(data.frame(
> x=c(0.1,0.8)),aes(x=x))+stat_function(fun=myfun.5,geom="line")
> g.2

You are a) failing to pay attention to the warning message:

> g.2
Warning message:
Computation failed in `stat_function()`:
'a' (2 x 102) must be square

>

.... and b) as a consequence failing to debug your function. Add a print(A) line immediately after your construction of A:

 myfun.5(1:10)
      [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] [,10] [,11]
[1,]  1.15  2.15  3.15  4.15  5.15  6.15  7.15  8.15  9.15 10.15 -0.25
[2,] -0.50 -1.50 -2.50 -3.50 -4.50 -5.50 -6.50 -7.50 -8.50 -9.50  0.90
Error in solve.default(A, b) : 'a' (2 x 11) must be square

The fun argument in stat_fun is supposed to accept a vector with x values and return y values for "predictions". You have not indicated what plot was expected, You've given no indication what the various constants are supposed to represent, and you are only giving x-values to aes.ggplot, so I'm unable to infer what is intended.



> --
> Professor of Family Medicine
> Boston University
> Tel: 617-414-6221, Fax:617-414-3345
> emails: [hidden email],[hidden email]
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius
Alameda, CA, USA

'Any technology distinguishable from magic is insufficiently advanced.'   -Gehm's Corollary to Clarke's Third Law

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.