Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/r-lib/isoband
isoband: An R package to generate contour lines and polygons.
https://github.com/r-lib/isoband
Last synced: about 1 month ago
JSON representation
isoband: An R package to generate contour lines and polygons.
- Host: GitHub
- URL: https://github.com/r-lib/isoband
- Owner: r-lib
- License: other
- Created: 2018-12-29T06:05:34.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2022-12-20T13:26:52.000Z (almost 2 years ago)
- Last Synced: 2024-04-10T06:06:37.448Z (8 months ago)
- Language: C++
- Homepage: https://isoband.r-lib.org
- Size: 36.7 MB
- Stars: 130
- Watchers: 8
- Forks: 13
- Open Issues: 6
-
Metadata Files:
- Readme: README.Rmd
- License: LICENSE
Awesome Lists containing this project
- jimsghstars - r-lib/isoband - isoband: An R package to generate contour lines and polygons. (C++)
README
---
output: github_document
---```{r setup, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
dpi = 150
)
```# isoband
[![CRAN status](https://www.r-pkg.org/badges/version/isoband)](https://CRAN.R-project.org/package=isoband)
[![R-CMD-check](https://github.com/r-lib/isoband/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/r-lib/isoband/actions/workflows/R-CMD-check.yaml)
[![Codecov test coverage](https://codecov.io/gh/r-lib/isoband/branch/main/graph/badge.svg)](https://app.codecov.io/gh/r-lib/isoband?branch=main)Generate contour lines (isolines) and contour polygons (isobands) from regularly spaced grids containing elevation data. Package originally written by Claus Wilke and donated to r-lib in 2022.
## InstallationInstall the latest official release from CRAN via:
``` r
install.packages("isoband")
```Install the current development from github via:
``` r
# install.packages("pak")
pak::pak("r-lib/isoband")
```## Examples
The two main workhorses of the package are the functions `isolines()` and `isobands()`, respectively. They return a list of isolines/isobands for each isolevel specified. Each isoline/isoband consists of vectors of x and y coordinates, as well as a vector of ids specifying which sets of coordinates should be connected. This format can be handed directly to `grid.polyline()`/`grid.path()` for drawing. However, we can also convert the output to spatial features and draw with ggplot2 (see below).
```{r basic-example}
library(isoband)m <- matrix(c(0, 0, 0, 0, 0,
0, 1, 2, 1, 0,
0, 1, 2, 0, 0,
0, 1, 0, 1, 0,
0, 0, 0, 0, 0), 5, 5, byrow = TRUE)isolines(1:ncol(m), 1:nrow(m), m, 0.5)
isobands(1:ncol(m), 1:nrow(m), m, 0.5, 1.5)
```The function `plot_iso()` is a convenience function for debugging and testing.
```{r basic-example-plot, fig.asp = 1, out.width = "50%"}
plot_iso(m, 0.5, 1.5)
```The isolining and isobanding algorithms have no problem with larger datasets. Let’s calculate isolines and isobands for the volcano dataset, convert to sf, and plot with ggplot2.
```{r volcano, fig.asp = 1, out.width = "50%"}
library(ggplot2)
suppressWarnings(library(sf))m <- volcano
b <- isobands((1:ncol(m))/(ncol(m)+1), (nrow(m):1)/(nrow(m)+1), m, 10*(9:19), 10*(10:20))
l <- isolines((1:ncol(m))/(ncol(m)+1), (nrow(m):1)/(nrow(m)+1), m, 10*(10:19))bands <- iso_to_sfg(b)
data_bands <- st_sf(
level = 1:length(bands),
geometry = st_sfc(bands)
)
lines <- iso_to_sfg(l)
data_lines <- st_sf(
level = 2:(length(lines)+1),
geometry = st_sfc(lines)
)ggplot() +
geom_sf(data = data_bands, aes(fill = level), color = NA, alpha = 0.7) +
geom_sf(data = data_lines, color = "black") +
scale_fill_viridis_c(guide = "none") +
coord_sf(expand = FALSE)
```