[R] example of geom_contour() with function argument

David Winsemius dwinsemius at comcast.net
Mon Oct 9 18:32:40 CEST 2017


> On Oct 9, 2017, at 6:03 AM, Big Floppy Dog <bigfloppydog at gmail.com> wrote:
> 
> Hello Ulrik,
> 
> I apologize, but I can not see how to provide a pdf in place of the density
> function which calculates a KDE (that is, something from the dataset in the
> example). Can you please point to the specific example that might help?
> 
> Here is what I get:
> 
> require(mvtnorm)
> require(ggplot2)
> set.seed(1234)
> xx <- data.frame(rmvt(100, df = c(13, 13)))
> 
> 
> v <- ggplot(faithfuld, aes(waiting, eruptions, z = drmvt, df = c(13,13)))
> v + geom_contour()
> 
> Don't know how to automatically pick scale for object of type function.
> Defaulting to continuous.
> Error: Aesthetics must be either length 1 or the same as the data (5625):
> x, y, z, df
> 

That's not what I get:

> v <- ggplot(faithfuld, aes(waiting, eruptions, z = drmvt, df = c(13,13)))
> v + geom_contour()
Error in FUN(X[[i]], ...) : object 'drmvt' not found
> 
> ? faithfuld
> str(faithfuld)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':	5625 obs. of  3 variables:
 $ eruptions: num  1.6 1.65 1.69 1.74 1.79 ...
 $ waiting  : num  43 43 43 43 43 43 43 43 43 43 ...
 $ density  : num  0.00322 0.00384 0.00444 0.00498 0.00542 ...

So you are apparently trying to throw together code and data that you don't understand. The data you are using is already a density estimate designed to simply be plotted. It is not the original data. Furthermore you are passing drmvt that is apparently not in either the mvtnorm nor the ggplot2 packages.

You should determine where that function is and then determine how to do a 2d estimate on the original data. I'm guessing this is homework so not inclined to offer a complete solution.

-- 
David.


> 
> Can you please tell me how to use this here? Or is some other example more
> appropriate?
> 
> TIA,
> BFD
> 
> 
> 
> On Mon, Oct 9, 2017 at 2:22 AM, Ulrik Stervbo <ulrik.stervbo at gmail.com>
> wrote:
> 
>> Hi BFD,
>> 
>> ?geom_contour() *does* have helpful examples. Your Google-foo is weak:
>> Searching for geom_contour brought me: http://ggplot2.tidyverse.
>> org/reference/geom_contour.html as the first result.
>> 
>> HTH
>> Ulrik
>> 
>> On Mon, 9 Oct 2017 at 08:04 Big Floppy Dog <bigfloppydog at gmail.com> wrote:
>> 
>>> Can someone please point me to an example with geom_contour() that uses a
>>> function? The help does not have an example of a function, and also  I did
>>> not find anything from online searches.
>>> 
>>> TIA,
>>> BFD
>>> 
>>> 
>>> ------------------------------------------------------------
>>> -----------------------------------
>>> 
>>> How about geom_contour()?
>>> 
>>> Am So., 8. Okt. 2017, 20:52 schrieb Ranjan Maitra <maitra at email.com>:
>>> 
>>>> Hi,
>>>> 
>>>> I am no expert on ggplot2 and I do not know the answer to your
>>> question. I
>>>> looked around a bit but could not find an answer right away. But one
>>>> possibility could be, if a direct approach is not possible, to draw
>>>> ellipses corresponding to the confidence regions of the multivariate t
>>>> density and use geom_polygon to draw this successively?
>>>> 
>>>> I will wait for a couple of days to see if there is a better answer
>>> posted
>>>> and then write some code, unless you get to it first.
>>>> 
>>>> Thanks,
>>>> Ranjan
>>>> 
>>>> 
>>>> On Sun, 8 Oct 2017 09:30:30 -0500 Big Floppy Dog <
>>> bigfloppydog at gmail.com>
>>>> wrote:
>>>> 
>>>>> Note: I have posted this on SO also but while the question has been
>>>>> upvoted, there has been no answer yet.
>>>>> 
>>>>> 
>>>> 
>>> https://stackoverflow.com/questions/46622243/ggplot-
>>> plot-2d-probability-density-function-on-top-of-points-on-ggplot
>>>>> 
>>>>> Apologies for those who have seen it there also but I thought that
>>> this
>>>>> list of experts may have someone who knows the answer.
>>>>> 
>>>>> I have the following example code:
>>>>> 
>>>>> 
>>>>> 
>>>>> require(mvtnorm)
>>>>> require(ggplot2)
>>>>> set.seed(1234)
>>>>> xx <- data.frame(rmvt(100, df = c(13, 13)))
>>>>> ggplot(data = xx,  aes(x = X1, y= X2)) + geom_point() +
>>> geom_density2d()
>>>>> 
>>>>> 
>>>>> 
>>>>> It yields a scatterplot of X2 against X1 and a KDE contour plot of the
>>>>> density (as it should).
>>>>> 
>>>>> My question is: is it possible to change the contour plot to display
>>>>> the contours
>>>>> 
>>>>> of a two-dimensional density function (say dmvt), using ggplot2?
>>>>> 
>>>>> The remaining figures in my document are in ggplot2 and therefore I
>>>>> am looking for a ggplot2 solution.
>>>>> 
>>>>> Thanks in advance!
>>>>> 
>>>>> BFD
>>>>> 
>>>>>      [[alternative HTML version deleted]]
>>>>> 
>>>>> ______________________________________________
>>>>> R-help at r-project.org 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.
>>>>> 
>>>> 
>>>> 
>>> 
>>>        [[alternative HTML version deleted]]
>>> 
>>> ______________________________________________
>>> R-help at r-project.org 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.
>>> 
>> 
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org 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



More information about the R-help mailing list