On 09/19/2020 12:42 AM, Jeff Newmiller wrote:> When dealing with a 2-d density plot, the z variable is a predefined function of your x and y data, it is not something you can specify. If you want to specify z, then you need to use geom_contour. You appear to need to study the theory of kernel density estimates, which is off topic here. (Technically contributed packages like ggplot2 are off topic here also, though sometimes people will answer questions about them anyway.) > > On September 18, 2020 6:34:43 PM PDT, H <agents at meddatainc.com> wrote: >> On 09/18/2020 02:26 AM, Jeff Newmiller wrote: >>> No, but fortunately you are off in the weeds. Density has an >> internally-computed "z" coordinate... you should be looking at >> ?geom_contour. >>> On September 17, 2020 7:17:33 PM PDT, H <agents at meddatainc.com> >> wrote: >>>> I am trying to understand how to map 2D to 3D using ggplot() and >>>> eventually plot_gg(). I am, however, stuck on understanding how to >>>> express the third variable to be mapped. This example: >>>> >>>> ggdiamonds = ggplot(diamonds, aes(x, depth)) + >>>> stat_density_2d(aes(fill = stat(nlevel)), >>>> geom = "polygon", n = 100, bins = 10,contour = TRUE) + >>>> facet_wrap(clarity~.) + >>>> scale_fill_viridis_c(option = "A") >>>> >>>> uses a variable nlevel that I now understand is calculated during >> the >>>> building of the ggplot but I have not figured out from where it is >>>> calculated or how to specify a variable of my choosing. >>>> >>>> Does anyone have a good reference for understanding how to specify >> this >>>> variable? Most examples on the 'net seem to use the same dataset but >> do >>>> not specify this particular aspect... >>>> >>>> ______________________________________________ >>>> 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. >> But looking at the code in my message above, how does one know what >> stat(nlevel) refers to? What if I wanted to map another variable in >> this particular dataset?? >> >> ______________________________________________ >> 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.Understood, I just began looking at the volcano dataset which uses geom_contour. I now realize that the function stat_density_2d really maps a heatmap of a computed variable.
> UnderstoodI'd recommend you try to be more precise.> I just began looking at the volcano dataset which uses geom_contour.The volcano dataset does *not* use geom_contour. However, the help file for the volcano dataset, does use the filled.contour function, in its example.> I now realize that the function stat_density_2d really maps a heatmapIf I hadn't read the rest of this thread, I wouldn't know what you meant by "maps" a heatmap. The kde2d function returns a list, containing a density matrix. (As per my previous post). The plotting functions, compute the density via the above density estimation function, and then plot that density, in some form. I suppose you could say the plotting functions map observations to density estimates, then map the density estimates to contours and/or other graphic data, and then map the graphic data to a plot, which is seen by a user... ...but it's probably easier to just say plot the density.>of a computed variable.It's rare in probability theory to refer to density as a "variable". (Which is relevant because density estimates are estimates of probability distributions). However, it is common in computer graphics and geometry, to use "z" for a "third variable". And in applied statistics and data science, "variable" could mean anything... So, be careful there... Based on your posts, I take it you want to plot a function of two variables (or plot a matrix of values), using a 2d plot. There are a number of options here. Contour plots. Filled contour plots. Heatmaps. Plots using hex/other binning. Maybe others...? Additionally, there are 3d plots, such as surface plots. And I note that it's possible to plot contour lines on top of color-filled contours or heatmaps.
On 09/19/2020 04:33 PM, Abby Spurdle wrote:>> Understood > I'd recommend you try to be more precise. > >> I just began looking at the volcano dataset which uses geom_contour. > The volcano dataset does *not* use geom_contour. > However, the help file for the volcano dataset, does use the > filled.contour function, in its example. > >> I now realize that the function stat_density_2d really maps a heatmap > If I hadn't read the rest of this thread, I wouldn't know what you > meant by "maps" a heatmap. > > The kde2d function returns a list, containing a density matrix. > (As per my previous post). > > The plotting functions, compute the density via the above density > estimation function, and then plot that density, in some form. > > I suppose you could say the plotting functions map observations to > density estimates, then map the density estimates to contours and/or > other graphic data, and then map the graphic data to a plot, which is > seen by a user... > ...but it's probably easier to just say plot the density. > >> of a computed variable. > It's rare in probability theory to refer to density as a "variable". > (Which is relevant because density estimates are estimates of > probability distributions). > > However, it is common in computer graphics and geometry, to use "z" > for a "third variable". > And in applied statistics and data science, "variable" could mean anything... > So, be careful there... > > Based on your posts, I take it you want to plot a function of two > variables (or plot a matrix of values), using a 2d plot. > > There are a number of options here. > > Contour plots. > Filled contour plots. > Heatmaps. > Plots using hex/other binning. > Maybe others...? > > Additionally, there are 3d plots, such as surface plots. > > And I note that it's possible to plot contour lines on top of > color-filled contours or heatmaps.I was looking at this example which uses geom_contour(): ggvolcano = volcano %>% ?reshape2::melt() %>% ?ggplot() + ?geom_tile(aes(x=Var1,y=Var2,fill=value)) + ?geom_contour(aes(x=Var1,y=Var2,z=value),color="black") + ?scale_x_continuous("X",expand = c(0,0)) + ?scale_y_continuous("Y",expand = c(0,0)) + ?scale_fill_gradientn("Z",colours = terrain.colors(10)) + ?coord_fixed() print(ggvolcano)