[R] Dirichlet surface
Gavin Simpson
gavin.simpson at ucl.ac.uk
Wed Mar 30 20:35:05 CEST 2011
On Wed, 2011-03-30 at 11:12 -0700, Kehl Dániel wrote:
> Actually, it works for the a=1 case, not for the others. It still gives
> the invalid 'zlim argument' error.
> I'll try to work it out maybe instead of NULL giving a c which is
> dependent on the max(z).
Sorry, I misread the helpfile - the other lims can be NULL but not zlim.
This works:
persp(x1, x2, z,
zlim = if(length(na.omit(unique(as.vector(z)))) < 2) {
c(0,2.1)
} else {
range(z, na.rm = TRUE)
})
HTH
G
> Daniel
>
> 2011-03-30 10:42 keltezéssel, Kehl Dániel írta:
> > It helped a lot indeed, thank you very much!
> > Now I understand why it was a problem for persp!
> >
> > Daniel
> >
> > 2011-03-30 10:31 keltezéssel, Gavin Simpson írta:
> >> On Wed, 2011-03-30 at 09:55 -0700, Kehl Dániel wrote:
> >>> Dear David,
> >>>
> >>> I think that is a small bug too, maybe because the function is
> >>> constant?
> >>> is there a nice way to put the c(0,2.1) argument optionally, only if
> >>> all
> >>> the parameters are 1?
> >>> Should I post the problem somewhere else (developers maybe?)
> >> I don't think this is a bug really; the code is having to compute limits
> >> of the z axis and you supplied it one bit of information: a 2. If your
> >> data are so degenerate then it is not unreasonable to expect some user
> >> intervention. Admittedly, persp doesn't seem to work like other R
> >> plotting functions.
> >>
> >> You could do something like:
> >>
> >> persp(x1, x2, z,
> >> zlim = if(length(na.omit(unique(as.vector(z))))< 2){ c(0,2.1) }
> >> else { NULL})
> >>
> >> in your call to persp so it only uses user-defined limits if the number
> >> of numeric values in z is less than 2.
> >>
> >> HTH
> >>
> >> G
> >>
> >>> thanks:
> >>> Daniel
> >>>
> >>> 2011-03-30 04:42 keltezéssel, David Winsemius írta:
> >>>> On Mar 29, 2011, at 4:45 PM, Kehl Dániel wrote:
> >>>>
> >>>>> Dear list members,
> >>>>>
> >>>>> I want to draw surfaces of Dirichlet distributions with different
> >>>>> parameter settings.
> >>>>> My code is the following:
> >>>>> #<begin code>
> >>>>> a1<- a2<- a3<- 2
> >>>>> #a2<- .5
> >>>>> #a3<- .5
> >>>>> x1<- x2<- seq(0.01, .99, by=.01)
> >>>>>
> >>>>> f<- function(x1, x2){
> >>>>> term1<- gamma(a1+a2+a3)/(gamma(a1)*gamma(a2)*gamma(a3))
> >>>>> term2<- x1^(a1-1)*x2^(a2-1)*(1-x1-x2)^(a3-1)
> >>>>> term3<- (x1 + x2< 1)
> >>>>> term1*term2*term3
> >>>>> }
> >>>>>
> >>>>> z<- outer(x1, x2, f)
> >>>>> z[z<=0]<- NA
> >>>>>
> >>>>> persp(x1, x2, z,
> >>>>> main = "Dirichlet Distribution",
> >>>>> col = "lightblue",
> >>>>> theta = 50,
> >>>>> phi = 20,
> >>>>> r = 50,
> >>>>> d = 0.1,
> >>>>> expand = 0.5,
> >>>>> ltheta = 90,
> >>>>> lphi = 180,
> >>>>> shade = 0.75,
> >>>>> ticktype = "detailed",
> >>>>> nticks = 5)
> >>>>> #<end code>
> >>>>>
> >>>>> It works fine (I guess), except for a1=a2=a3=1. In that case I get
> >>>>> the error: Error in persp.default... invalid 'z' limits.
> >>>>> The z matrix has only elements 2 and NA.
> >>>> Might be a buglet in persp. If you set the zlim argument to c(0,2.1),
> >>>> you get the expected constant plane at z=2 for those arguments.
> >>>>> Any ideas are appreciated.
> >>>>>
> >>>>> Thank you:
> >>>>> Daniel
> >>>>> University of Pécs
> >>>>>
> >>>>> ______________________________________________
> >>>>> R-help at r-project.org mailing list
> >>>>> 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, MD
> >>>> Heritage Laboratories
> >>>> West Hartford, CT
> >>>>
> >>>>
> >>>>
> >>> ______________________________________________
> >>> R-help at r-project.org mailing list
> >>> 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.
> >
> > ______________________________________________
> > R-help at r-project.org mailing list
> > 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.
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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.
--
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
Dr. Gavin Simpson [t] +44 (0)20 7679 0522
ECRC, UCL Geography, [f] +44 (0)20 7679 0565
Pearson Building, [e] gavin.simpsonATNOSPAMucl.ac.uk
Gower Street, London [w] http://www.ucl.ac.uk/~ucfagls/
UK. WC1E 6BT. [w] http://www.freshwaters.org.uk
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
More information about the R-help
mailing list