density_area {densityarea} | R Documentation |
Density Area
Description
A convenience function to get just the areas of density polygons.
Usage
density_area(
x,
y,
probs = 0.5,
as_sf = FALSE,
as_list = FALSE,
range_mult = 0.25,
rangex = NULL,
rangey = NULL,
...
)
Arguments
x , y |
Numeric data dimensions |
probs |
Probabilities to compute density polygons for |
as_sf |
Should the returned values be sf::sf? Defaults to |
as_list |
Should the returned value be a list? Defaults to |
range_mult |
A multiplier to the range of |
rangex , rangey |
Custom ranges across |
... |
Additional arguments to be passed to |
Details
If both rangex
and rangey
are defined, range_mult
will be disregarded.
If only one or the other of rangex
and rangey
are defined, range_mult
will be used to produce the range of the undefined one.
Value
A list of data frames, if as_list=TRUE
, or just a data frame,
if as_list=FALSE
.
Data frame output
If as_sf=FALSE
, the data frame has the following columns:
- level_id
An integer id for each probability level
- prob
The probability level (originally passed to
probs
)- area
The area of the HDR polygon
sf output
If as_sf=TRUE
, the data frame has the following columns:
- level_id
An integer id for each probability level
- prob
The probability level (originally passed to
probs
)- geometry
The
sf::st_polygon()
of the HDR- area
The area of the HDR polygon
Examples
library(densityarea)
library(dplyr)
library(sf)
ggplot2_inst <- require(ggplot2)
# basic usage
set.seed(10)
x <- rnorm(100)
y <- rnorm(100)
density_area(x,
y,
probs = ppoints(50)) ->
poly_areas_df
head(poly_areas_df)
# Plotting the relationship between probability level and area
if(ggplot2_inst){
ggplot(poly_areas_df,
aes(prob, area)) +
geom_line()
}
# Tidyverse usage
data(s01)
## Data preprocessing
s01 |>
mutate(log_F2 = -log(F2),
log_F1 = -log(F1)) ->
s01
### Data frame output
s01 |>
group_by(name) |>
reframe(density_area(log_F2,
log_F1,
probs = ppoints(10))) ->
s01_areas_df
if(ggplot2_inst){
s01_areas_df |>
ggplot(aes(prob, area)) +
geom_line()
}
### Including sf output
s01 |>
group_by(name) |>
reframe(density_area(log_F2,
log_F1,
probs = ppoints(10),
as_sf = TRUE)) |>
st_sf() ->
s01_areas_sf
if(ggplot2_inst){
s01_areas_sf |>
arrange(desc(prob)) |>
ggplot() +
geom_sf(aes(fill = area))
}